解决centos安装mysql8.0遇到的错误
记录一次坑爹的操作。很久很久前,安装mysql很顺利,于是乎,顺着经验,在mysql8.0上撞了大坑,只能怪,经验太旧太旧了,至此更新如下:
linux安装mysql,最新版8.0:
1、首先,检测是否已安装:
rpm -qa | grep mysql
删除已安装的mysql:
rpm -e --nodeps mysql或rm -rf xxx
2、安装,登陆mysql官网,下载对应版本的YUM资源包。
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
初始化,
mysqld --initialize
启动,
systemctl start mysqld
停止,
systemctl stop mysqld
重启,
systemctl restart mysqld
3、填坑
1)、启动后会提示:
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
遇到这种错误,第一反应,根据提示,执行
systemctl status mysqld.service或journalctl -xe命令,
查看信息,结果得到的与想要的,相差甚远:
给的提示,最终指向Error: 13 (Permission denied)。。。Failed to start MySQL Server.
没什么卵用,于是乎,查看mysql错误日志:
执行c
查看日志后得知,mysqld.pid没有写入权限,采取以下方式解决:
chown -R mysql:mysql /var/run/mysqld
再次启动,成功!
2)、给root用户设置密码
按照以前的经验,一顿操作猛如虎,定睛看,root密码仍是处!(过时经验,不再赘述)
悔当初,没仔细看官网文档,于是乎,翻阅官方,得到如下方式:
执行以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log
得到mysql安装启动时,提供得临时密码xxx
通过临时密码,执行shell> mysql -uroot -p,输入临时密码,登陆mysql成功
执行以下命令:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxx';
设置新密码成功!
注:新密码遵循mysql的密码策略。密码策略validate_password
要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且总密码长度至少为8个字符
3)、开启远程访问
修改mysql.user表中root对应的host,默认为localhost,改为%,匹配所有主机:
update user set `host` = '%' where `user` = 'root' LIMIT 1;
给root分配所有访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
开启3306端口
使用navicat或navicat premium12连接mysql,报错:
2059-Authentication plugin 'caching_sha2_password' cannot be loaded:
原因,mysql8.0使用的身份验证插件为:caching_sha2_password,客户端工具使用的身份验证插件仍是mysql_native_password,解决:
修改mysql.user中的加密方式,
alter user 'root'@'%' identified with mysql_native_password by 'root密码';
至此,mysql8.0填坑初步完成。