01-MySQL简介

nobility 发布于 2022-08-19 2578 次阅读


MySQL简介

由瑞典MySQL AB公司开发,目前属于Oracle旗下的关系型数据库

关系型数据库特点

  • 数据存储在标准二维表中,在存储数据之前需要先定义好表结构
  • 支持事务的ACID特性(原子性、一致性、隔离性、持久性)
  • 支持SQL语言操作数据

SQL、DB、DBSM关系

  • DB:数据库
  • DBSM:数据库管理系统
  • SQL:结构化查询语言
  • DBSM-->(执行)-->SQL-->(操作)-->DB

MySQL特性

  1. 使用广泛:可方便获取技术支持
  2. 可扩展性强:支持基于二进制日志的逻辑复制,存在多种第三方数据库中间层,支持读写分离和分库分表
  3. 安全且稳定:支持存储数据进行分级安全控制,支持主从复制集群和高可用架构
  4. 支持多种操作系统:支持Windows和Linux系统
  5. 开源免费

MySQL使用场景

  • 数据之间存在一定关系,需要关联查询数据的场景
  • 需要事务支持的业务场景
  • 需要使用SQL语言灵活操作数据的场景

MySQL安装

可从MySQL官网获取MySQL所有版本安装包(下载Linux通用版Linux-Generic(glibc-2.12),而不是红帽版)

wget -P /opt https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz #下载安装包
xz -d /opt/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz	#解压为tar包
tar -xf /opt/mysql-8.0.21-linux-glibc2.12-x86_64.tar -C /opt/	#解压tar包
ln -s /opt/mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysql	#在/usr/local目录下建立软连接
echo "export PATH=\$PATH:/usr/local/mysql/bin" >> /etc/profile	#将mysql加入环境变量
source /etc/profile	#刷新profile文件

存储引擎(Oracle叫存储方式)

使用show engines;查看当前数据库系统支持的存储引擎

  • MyISAM
    • 不支持事务
    • 三种文件存储表(frm结构,myd数据,myi索引)
    • 可被压缩,可以转换为只读表,提高检索效率
  • CSV
    • 不支持事务
    • 以CSV格式存储进行存储
    • 读写时对整个表加锁
  • Archive
    • 不支持事务
    • 只允许查询和新增数据,不允许修改数据
  • InnoDB
    • 支持事务,行级锁,外键,级联删除和更新,数据更加安全
    • frm结构,tablespace数据,log事务日志文件
    • 数据按照索引聚集存储(主键变化会导致数据迁移,所以一般使用自增序列当索引),支持BTree和自适应Hash索引
    • 不可被压缩,不可转换为只读表
  • Memory(HEAP)
    • 不支持事务
    • 内存数据库
    • 仅支持表级锁,不支持大文本数据
    • 查询速度快

MySQL常用配置

系统默认MySQL配置文件就是/etc/my.cnf文件,不管你是否安装过MySQL,修改好配置文件后以及目录的创建后,使用mysqld --initialize进行MySQL的初始化,初始化后会显示出MySQL中root初始密码,初次登入MySQL后需要进行修改

  • client:客户端配置
    • port:客户端口号默认连接端口号
  • mysql:命令行配置
    • auto-rehash:开启tab自动补全命令
    • default-character-set:客户端默认字符集
    • max_allowed_packet: 客户端网络传输的最大数据包,默认为1MB,最大值1GB
  • mysqld:服务端配置
    • port:服务端启动端口
    • user:启动MySQL进程用户,一般使用非root用户启动
    • basedir:mysql软件的安装根目录
    • datadir:数据目录
    • character-set-server:数据库默认字符集
    • bind-address:绑定网卡IP
    • tmpdir :临时文件存放目录
    • log_bin:二进制日志存放路径
    • max_allowed_packet:服务端网络传输的最大数据包,默认为1MB,最大1GB
    • max_connections:最大连接数
    • default_storage_engine:默认存储引擎
    • innodb_undo_directory:undolog日志文件目录
    • innodb_undo_tablespaces:undolog日志文件个数
[client]
port=3306

[mysqld]
port=3306
user=root	#一般不使用root启动,不太安全
basedir=/usr/local/mysql
datadir=/var/lib/mysql
character-set-server=utf8

#下面选项不设置会默认在数据目录下
default_storage_engine=InnoDB
innodb_undo_directory=/var/lib/mysql/undo
log_bin=/var/lib/mysql_log/bin-log

[mysql]
auto-rehash
default-character-set=utf8

MySQL启动与关闭

将MySQL启动脚本拷贝到/etc/init.d/下,并重命名为mysqld,之后使用service服务管理工具方式进行启动和关闭

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld	#拷贝MySQL启动脚本
service mysqld start	#启动MySQL服务
service mysqld stop	#关闭MySQL服务

连接MySQL

mysql:启动MySQL客户端

  • u:用户名
  • p:密码
  • h:主机IP
  • P:端口号

使用随机生成的密码进入MySQL后需要更改密码,使用alter user user() identified by 'MyNewPass';重置密码即可,如果已经忘记了密码,使用以下方式进行重置root密码(在停止MySQL进程的情况下执行)

service mysqld stop	#停止MySQL进程
echo "alter user 'root'@'localhost' identified by 'MyNewPass';" > /tmp/mysql-init	#将设置密码的sql命令写入文件
mysqld --init-file=/tmp/mysql-init &	#重新初始化
rm -rf /tmp/mysql-init	#删除初始化命令文件
service mysqld restart	#重启MySQL进程

配置远程访问数据库

首先将配置文件中的bind-address配置项注释掉(若没有则无视),重启MySQL,进入MySQL执行以下命令

use mysql;	--切换到myslq库
select host,user from user; -- 查看当前数据用户的登入主机限制
update user set host='%' where host='localhost' and user='root';	-- 将root用户的在localhost登入设置为%,即所有IP都可登入
flush privileges;	--刷新权限
此作者没有提供个人介绍
最后更新于 2022-08-19