准备工作:清理旧版本mysql,准备rpm安装包
1. 获取到mysql最新安装包如下,将其放在虚拟机路径/usr/mysql
下
- mysql-community-client-8.0.26-1.el7.x86_64.rpm
- mysql-community-common-8.0.26-1.el7.x86_64.rpm
- mysql-community-libs-8.0.26-1.el7.x86_64.rpm
- mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm
- mysql-community-server-8.0.26-1.el7.x86_64.rpm
2. 使用rpm -qa|grep mysql
命令查看是否安装了mysql,如果显示有,转到3
3. 已经安装了mysql需要先将安装的mysql卸载,直接进行rpm -Uvh [包名] --force --nodeps
的方式进行升级将会导致mysql无法启动
- 执行
rpm -ev [包名] --force --nodeps
命令将2中显示出来的已安装的和mysql有关的包全部卸载,需要注意的是,如果后缀不加--nodeps
可能不能进行删除,因为这些包存在依赖关系,需要强制删除
rpm -ev mysql-community-server-5.7.22-1.el7.x86_64 --nodeps
rpm -ev mysql-community-libs-compat-5.7.22-1.el7.x86_64 --nodeps
rpm -ev mysql-community-libs-5.7.22-1.el7.x86_64 --nodeps
rpm -ev mysql-community-common-5.7.22-1.el7.x86_64 --nodeps
rpm -ev mysql-community-client-5.7.22-1.el7.x86_64 --nodeps
- 执行以下命令删除其他目录中的配置和数据文件
rm -f /etc/my.cnf
rm -rf /var/lib/mysql
rm -rf /usr/lib64/mysql
开始安装8.0版本的mysql
1. 转到/usr/mysql
目录,执行以下命令
rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm --force --nodeps
2. 执行以下命令,启动mysql
service mysqld start
- 可以通过以下命令查看mysql的运行状态:
service mysqld status
- 执行以下命令,配置开机自启动:
#启用开机自启动
chkconfig mysqld on
#关闭开机自启动
chkconfig mysqld off
3.进行mysql的配置
修改/etc/my.cnf
文件,在节点 [mysqld]
节点下增加 default-time-zone = '+08:00'
- 执行以下命令查看初始的随机密码:
cat /var/log/mysqld.log | more
其中的[Note] A temporary password is generated for root@localhost:d-s)sqqcv5(Z
表示随机密码是d-s)sqqcv5(Z
,执行命令:
mysql -uroot -p
输入上述随机密码进行登录
- 在这里我遇到了问题,使用
mysqld.log
中的初始随机密码进行登录时显示ERROR,应该是密码不正确,不知道是什么原因,如果有同样遇到问题的伙计,可以参考下面我的解决方法:
执行命令如下
#修改my.cnf文件,以便先跳过密码验证登入mysql
vim /etc/my.cnf
在其中的节点 [mysqld]
节点下增加skip-grant-tables
,按下Esc,:,输入wq保存退出,重启mysql:
service mysqld restart
重新执行命令:
mysql -uroot -p
这次可以直接回车而无需输入密码,可以登陆进入mysql,然后进行密码设置,执行sql命令如下:
flush privileges;
update user set password=PASSWORD('123456') where user='root';
注意其中的第一句命令,如果不执行就设置密码会报错,提示当前处于无密码登录,无法执行命令;其中的123456
就是用于登录mysql要设置的密码
如此可以解决使用初始随机密码无法登录的问题。
- 执行命令
set global validate_password_mixed_case_count=0;
报错:ERROR 1193 (HY000): Unknown system variable 'validate_password_mixed_case_count'
- 原因:mysql8.0已经将这些字段名全部更改,
validate_password
之后应该跟一个.
,其他保持不变 - 解决:将错误的字段名改正,如
validate_password_mixed_case_count
更改为validate_password.mixed_case_count
- 执行以下命令:
- 原因:mysql8.0已经将这些字段名全部更改,
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=3;
set global validate_password.special_char_count=0;
set global validate_password.length=3;
set global validate_password.policy=0;
- 接下来按照搭建文档(搭建文档为公司内部文档,不便透露)安装mysql的下一步,执行命令
grant all on *.* to 'root'@'%' identified by '123456';
报错,说是有语法错误,mysql8.0不再这么写了,而是要换用下面的写法:
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SHOW VARIABLES LIKE 'validate_password%';
- 最后执行
service mysqld restart
重启mysql,然后使用Navicate进行远程连接数据库,成功。 - 配置
/etc/my.cnf
文件,将外部已有的文件内容直接拷贝到其中,重启mysql,遇到问题:mysql重启失败,查看日志报错信息如下:
Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CR...
4.配置文件my.cnf
注意事项
在8.0中以下参数已被过期:
- log日志保存的天数:
expire_logs_days
- log日志保存的天数:
在8.0中以下参数已被删除:
NO_AUTO_CREATE_USER
[ERROR] [MY-000067] [Server] unknown variable ‘query_cache_size=16M’.
- 注解掉该参数
mysqld: Table ‘mysql.plugin’ doesn’t exist
2021-09-15T03:11:30.325042Z 0 [ERROR] [MY-010735] [Server] Could not open the mysql.plugin table. Please perform the MySQL upgrade procedure.- 此错误是由于mysql初始化失败导致的,执行
mysqld --initialize --console
可以进行初始化,
- 此错误是由于mysql初始化失败导致的,执行
mysqld: File ‘./binlog.index’ not found (OS errno 13 - Permission denied)
- 没有赋予权限,执行命令
chown mysql.mysql -R /var/lib/mysql
,重启mysql
- 没有赋予权限,执行命令
查看密码复杂度表
show variables like 'validate_password%';
版权声明:本文为weixin_41915353原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。