前提:RedHat7.4,MySQL8.0以上版本,可连接外网
1.安装rpm包
wget https://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
2.设置权限
chown mysql:mysql -R /var/lib/mysql
3.初始化MySQL
mysqld --initialize
4.启动MySQL
systemctl start mysqld
这时候会报以下错误:
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
并不能很详细的反馈错误信息
只有去查看日志less /var/log/mysqld.log
方法一:
修改mysql文件的权限,chmod -R 777 /var/lib/mysql
方法二:
停止mysql进程(此处我们根本就没启动,所以不必停止)
进入目录cd /var/lib/mysql
删除ib_logfile0
和ib_logfile1
两个文件
再次执行systemctl start mysqld
最后查看mysql进程是否启动systemctl status mysqld
5.修改root初始密码
跳过密码校验直接登录,在/etc/my.cnf
文件中找到[mysqld]
,添加一行内容skip-grant-tables
重启mysql进程,systemctl restart mysqld
执行mysql
或者mysql -uroot -p
无密码进入数据库
注意:mysql8.0以上密码策略限制必须要大小写加数字加特殊符号
刷新权限表,执行命令flush privileges;
修改root密码,'%'意为任何ip都可以连接该mysql,alter user'root'@'%' IDENTIFIED BY 'MyNewPass@123';
退出数据库,删除my.cnf
中添加的skip-grant-tables
重启mysql进程,systemctl restart mysqld
执行mysql -uroot -pMyNewPass@123
成功进入数据库
6.开启远程连接
进入数据库,执行use mysql;
授权,执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyNewPass@123' WITH GRANT OPTION;
如果报错可先执行update user set host = '%' where user = 'root';
刷新权限表,执行命令flush privileges;
再次执行授权命令,此时依然无法连接,原因是MySQL8.0的密码加密规则发生了改变
MySQL8.0之前的版本密码加密规则:mysql_native_password
MySQL8.0密码加密规则:caching_sha2_password
执行命令ALTER USER 'root'@'%' IDENTIFIED BY 'MyNewPass@123' PASSWORD EXPIRE NEVER;
执行命令ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MyNewPass@123';
加密规则修改之后,同时修改密码,执行ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MyNewPasswd@123';
此时执行命令GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyNewPasswd@123' WITH GRANT OPTION;
退出数据库,查看3006端口是否在工作
根据版本,执行systemctl status firewall.service
或systemctl status firewalld
查看防火墙状态
执行systemctl stop firewalld
或者systemctl stop firewall.service
停止防火墙
打开Navicat,输入信息后连接成功
至此,MySQL8.0版本的安装就算完成了。