linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

cyhgogogo 2020-02-16

上篇中2G内存服务器安装sql server失败了,这里我尝试使用mysql进行数据存储,简单点,直接用yum命令安装(在CentOS下,可以直接通过yum命令来安装数据库);在CentOS7中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

1、创建mysql下载及安装目录(/usr/local/mysql)

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

 2、添加安装包

wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

 3、安装/启动

#安装
sudo yum -y install mysql-community-server

#启动服务
sudo systemctl start mysqld

#查看版本信息
mysql -V

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

4、链接mysql并设置root密码

#1、查看MySQL为Root账号生成的临时密码
grep "A temporary password" /var/log/mysqld.log

#2、进入MySQL shell
mysql -u root -p

#3、修改密码
ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘Mypwd123!‘;

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

 5、开放端口(供远程链接mysql使用)

#开放端口
firewall-cmd --add-port=3306/tcp --permanent

#重新加载防火墙设置
firewall-cmd --reload

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

 报错,提示防火墙未运行,基于安全考虑,还是开启防火墙比较好;

①查看防火墙状态(systemctl status firewalld):目前是dead

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

 ②开启防火墙(systemctl start firewalld),关闭防火墙命令为:systemctl stop firewalld

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

 开启之后再执行开放端口命令,开启成功之后,重新加载一次防火墙设置

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

 6、创建数据库及为该数据库配置远程访问账号(mysql80版本后不允许grant在授权的时候隐式创建用户,必须先创建用户)

#新建本地用户
CREATE USER ‘test‘@‘localhost‘ IDENTIFIED BY ‘‘;

#新建远程用户
CREATE USER ‘test‘@‘%‘ IDENTIFIED BY ‘‘;

#新建数据库
CREATE DATABASE testdb;

#赋予指定账户指定数据库远程访问权限
GRANT ALL PRIVILEGES ON testdb.* TO ‘test‘@‘%‘;

#赋予指定账户对所有数据库远程访问权限
GRANT ALL PRIVILEGES ON *.* TO ‘test‘@‘%‘;

#赋予指定账户对所有数据库本地访问权限
GRANT ALL PRIVILEGES ON *.* TO ‘test‘@‘localhost‘;

#刷新权限
FLUSH PRIVILEGES;

7、使用新创建的用户(已授权远程访问的用户),navicat for mysql远程链接:

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

 百度查找了下,出现这种情况的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,

那么直接修改登录用户的加密规则即可:

ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘password‘ PASSWORD EXPIRE NEVER;#修改加密规则
ALTER USER ‘root‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘password‘; #更新一下用户的密码 
FLUSH PRIVILEGES; #刷新权限

再次使用navicat链接,成功!

参考资料

https://cloud.tencent.com/developer/article/1333812

https://blog.csdn.net/seventopalsy/article/details/80195246

相关推荐