| 作者 | 日期 | 天气 |
|---|---|---|
| 元公子 | 2020-01-21(周二) | 有些冻手冻脚的东莞 |
你知道的越少,你不知道的就越少
没有朋友的点赞,就没法升级打怪
一、缘起
最近想学习下MySQL的主从复制和集群,发现虚拟机中的版本有些旧,打算升级下。原来的版本是8.0.11,看了下最新的小版本为8.0.19,升级版本还是比较容易,与首次安装时的命令基本差不多,文章尾部会讲到。考虑到有首次接触的同学在,这里就从首次安装部署开始讲起,再到更新版本结束。
二、环境准备
- 示例使用Centos7 64位操作系统
三、下载安装包
本文采用离线和在线两种安装方式进行讲解。离线安装是先从官网下载二进制的安装文件,再传入服务器进行安装。在线安装是从官网下载repo仓库文件,传入服务器后通过安装命令自动下载和安装,服务器需可以联网。
四、开始安装
1. 清除系统已安装的MySQL软件和MariaDB
检查并删除mariadb软件(不存在则忽略)
[root@db1 /root]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@db1 /root]# sudo yum remove mariadb
# 或者rpm方式删除
# [root@db1 /root]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
检查并删除mysql软件
[root@db1 /root]# rpm -qa | grep -i mysql
mysql-community-test-8.0.11-1.el7.x86_64
mysql-community-client-8.0.19-1.el7.x86_64
mysql-community-embedded-compat-8.0.19-1.el7.x86_64
mysql80-community-release-el8-1.noarch
mysql-community-server-8.0.19-1.el7.x86_64
mysql-community-common-8.0.19-1.el7.x86_64
mysql-community-libs-compat-8.0.19-1.el7.x86_64
mysql-community-libs-8.0.19-1.el7.x86_64
mysql-community-devel-8.0.19-1.el7.x86_64
[root@db1 /root]# sudo yum -y remove mysql-community-{client,common,devel,embedded,libs,server,test}-*
[root@db1 /root]# sudo yum -y remove mysql80-community-release-el8-1.noarch
[root@db1 /root]# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql
[root@db1 /root]# rm -rf /var/lib/mysql
[root@db1 /root]# rm -rf /var/lib/mysql/mysql
[root@db1 /root]# rm -rf /usr/share/mysql
2. 离线式安装
本示例离线包放在/root/download目录下,客观您随意
[root@db1 /root]# sudo yum -y install openssl-devel
[root@db1 /root]# sudo yum -y install perl-JSON
[root@db1 /root/download]# tar -xvf mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar
[root@db1 /root/download]# sudo yum -y install mysql-community-{client,common,devel,embedded,libs,server}-*
[root@db1 /root/download]# mysql -V
mysql Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)
3. 在线式安装
本示例仓库文件放在/root/download目录下,客观您随意
[root@db1 /root/download]# sudo yum -y install mysql80-community-release-el7-3.noarch.rpm
[root@db1 /root/download]# sudo yum -y install mysql-community-server
[root@db1 /root/download]# mysql -V
mysql Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)
五、弄弄配置
MySQL默认用户为root,但是密码不清楚。所以按官方要求,先启动服务,从日志文件中查找初始密码,然后修改成自己的密码。
[root@db1 /root/download]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
[root@db1 /root/download]# cat /var/log/mysqld.log | grep password
2020-01-21T07:33:27.975342Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: AFM?9U>n!>j&
# 登录mysql,密码为AFM?9U>n!>j&,可复制粘贴。
[root@db1 /root/download]# mysql -uroot -p
# 显示密码相关的变量
mysql> show variables like 'validate_password%';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
# 使用前,需重置密码
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
# 密码太简单。由于默认密码策略太高,修改下默认策略(重启失效)
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=4;
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
# 修改此账户可以远程登录MySQL
mysql> show databases;
mysql> use mysql;
mysql> select user, host, plugin, authentication_string from user;
mysql> update user set host='%' where user = 'root';
# 由于直接操作表,需刷新内存生效。记录重启指令mysql> restart;
mysql> flush privileges;
mysql> exit
Bye
创建MySQL新账户
# 密码刚修改为123456
[root@db1 /home/dev/download]# mysql -uroot -p123456
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=4;
mysql> create user 'dev'@'%' identified by '123456';
# 查看用户权限
mysql> show grants for 'dev'@'%';
+---------------------------------+
| Grants for dev@% |
+---------------------------------+
| GRANT USAGE ON *.* TO `dev`@`%` |
+---------------------------------+
1 row in set (0.00 sec)
# 赋予所有权限
mysql> grant all privileges on *.* to 'dev'@'%';
# 或者按需赋权,授权基本的查询修改权限(参考)
# mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO 'dev'@'%';
# GRANT指令无需使用 flush privileges;
mysql> exit
MySQL服务命令
- 服务停止:service mysqld stop
- 服务启动:service mysqld start
- 服务重启:service mysqld restart
- 服务状态:service mysqld status
主要目录信息
| 配置文件 | /etc/my.cnf |
|---|---|
| 数据目录 | /var/lib/mysql |
| 日志目录 | /var/log |
| 服务文件 | /lib/systemd/system/mysqld.service |
| 执行文件 | /usr/sbin/mysqld |
六、更新小迭代版本
下载对应操作系统的版本,重新安装一次即可升级。大版本视情况而定,需看官方升级文档了解。
[root@db1 /root/download]# tar -xvf mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar
[root@db1 /root/download]# sudo yum -y install mysql-community-{client,common,devel,embedded,libs,server}-*
七、偶遇的坑
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
validate_password_number_count指定了密码中数字的长度 validate_password_special_char_count指定了密码中特殊字符的长度 validate_password_mixed_case_count指定了密码中大小字母的长度
mysql> show variables like 'validate_password%';
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
#修改
mysql> set global validate_password.policy=0;
mysql> select @@validate_password.policy;
mysql> set global validate_password.length=4;
mysql> select @@validate_password.length;
# 以下非必须
mysql> set global validate_password.special_char_count=0;
mysql> select @@validate_password.special_char_count;
mysql> set global validate_password.number_count=0;
mysql> select @@validate_password.number_count;
-
生成用户随机密码
附录:
-
官方文档:
-
资料检索:
配置文件(my.cnf)一些记录
## 可修改默认引擎
default-storage-engine=InnoDB