安装

检查是否自带Mariadb,如果有先卸载

  1. rpm -qa | grep mariadb
  2. rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64

然后下载rpm进行安装

  1. wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
  2. rpm -ivh mysql57-community-release-el7-9.noarch.rpm
  3. yum -y install mysql-server
  4. systemctl start mysqld

服务初始化

  1. 配置文件:/etc/my.cnf
  2. 日志文件:/var/log/mysqld.log
  3. Socket文件:/var/run/mysqld/mysqld.pid
  1. systemctl enable mysqld
  2. systemctl start mysqld
  3. systemctl status mysqld
  4. systemctl stop mysqld

设置 root 密码

  1. grep 'temporary password' /var/log/mysqld.log #获取临时密码
  2. 使用临时密码登录,然后修改密码(要求必须是大小写字母数字特殊字母的组合且至少要8位长度)
  3. mysql -uroot -p
  4. ALTER USER USER() IDENTIFIED BY 'Cy#8Js41';
  5. ALTER USER 'root'@'%' IDENTIFIED BY 'Cy#8Js41';

修改密码强度

  1. 查看密码的规则:SHOW VARIABLES LIKE 'validate_password%';
  2. PSvalidate_password_length=8,表示长度最少为8位;validate_password_policy=MEDIUM,表示密码的安全等级为中。
  3. 临时将密码安全等级设置为 lowset global validate_password_policy=0;,长度不变。
  4. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Cy#8J&s4';

创建数据库

  1. create database demo;
  2. 查看默认的数据库:show databases;
  3. 进入到mysql库:use mysql;
  4. 查看数据库的用户信息:select host,user from user;
  5. 创建用户并允许在任意主机上连接管理 demo 数据库:
  6. GRANT ALL PRIVILEGES ON demo.* TO 'test'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;

创建用户并设置权限

  1. CREATE USER 'test'@'%' IDENTIFIED BY '12345678';
  2. GRANT SELECT ON demo.* TO 'test'@'%' IDENTIFIED BY '87654321';#这里只给了查询权限

授权语句分析:GRANT 权限 ON 数据库.数据表 TO '用户'@'主机' IDENTIFIED BY '密码';

权限 ALL PRIVILEGES、select、insert、update、delete、create、drop、index、alter、grant、references、reload、shutdown、process、file
数据库 指定数据库,没有特别规定用*表示全部
数据表 指定数据表,没有特别规定用*表示全部
用户 创建的用户
主机 指定主机 IP,没有特别规定用%表示全部
密码 可以跟创建命令不一样

忘记密码

vim /etc/my.cnf 在 [mysqld] 底下添加语句:skip-grant-tables,然后重启 mysqld 服务;

  1. systemctl restart mysqld
  2. mysql -u root -p #直接回车
  3. mysql> use mysql;
  4. mysql> update user set authentication_string=password("123456") where user="root";
  5. mysql> flush privileges;
  6. mysql> exit

注释或者删除:skip-grant-tables,重启 mysqld 服务。

监控

相应指标如下:

名称 说明 类别
QPS 数据库每秒处理的请求数量 性能类
TPS 数据库每秒处理的事务数量 性能类
并发数 数据库实例当前并行处理的会话数量 性能类
连接数 连接到数据库会话的数量 性能类
缓存命中率 查询命中缓存的比例 性能类
可用性 数据库是否可以正常对外服务 高可用
阻塞 当前阻塞的会话数 高可用
慢查询 慢查询情况 高可用
主从延迟 主从延迟时间 高可用
主从状态 主从链路是否正常 高可用
死锁 查看死锁信息 高可用
  1. QPSshow global status where variable_name in ('Queries', 'uptime');
  2. TPSshow global status where variable_name in ('com_insert' , 'com_delete' , 'com_update', 'uptime');
  3. 并发数:show global status like 'Threads_running';
  4. 连接数 - 生产中配置报警阈值:Threads_connected / max_connections > 0.8
  5. 当前连接数:show global status like 'Threads_connected';
  6. 最大连接数:show global status like 'max_connections';
  7. innodb 缓冲池查询总数:show global status like 'innodb_buffer_pool_read_requests';
  8. innodb 从磁盘查询数:show global status like 'innodb_buffer_pool_reads';
  9. 缓存命中率 - 生产中配置报警阈值:(innodb_buffer_pool_read_requests - innodb_buffer_pool_reads) / innodb_buffer_pool_read_requests > 0.95
  10. 慢查询
  11. my.cnf 文件添加一下配置:
  12. long_query_time=1
  13. slow_query_log=ON
  14. slow_query_log_file=/var/log/mysqld-slow.log
  15. 实时生效使用命令 set global + 上述配置项
  16. select * from information_schema.'processlist';
  17. 主从延迟/状态:show slave status;
  18. 死锁:show engine innodb status;