Centos7安装mysql8.0

前几天开始学习Linux,在本地虚拟机上安装Centos7操作系统,许多命令都不清楚,一点点学习吧。首先我想在Centos7上安装数据库, 选择了mysql数据库进行安装,整个过程中遇到了不少问题,借鉴了他人写的文章,所幸最后安装成功并解决远程访问。现将大体步骤记录如下:

一、mysql安装

1. 下载mysql安装包
  点击mysql官网, 找到要下载的版本将,复制rpm包地址,执行wget命令

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

2. 安装mysql

执行命令 rpm -ivh mysql80-community-release-el7-3.noarch.rpm 

3. 安装mysql服务器并启动

1
2
3
4
yum repolist enabled | grep mysql.*   查看安装效果
yum install mysql-community-server 安装mysql服务器
systemctl start mysqld.service 启动mysql服务
systemctl status mysqld.service 查看mysql服务运行状态

二、mysql的一些操作

1. 用户登录,修改密码
  mysql在第一次安装后会初始化一个随机密码,我们要做的就是修改这个密码,使用grep ‘password’ /var/log/mysqld.log 命令查看初始随机密码(如没有修改,后续部分操作会提示修改密码)。

红色框内的就是随机密码,然后输入 mysql -uroot -p 命令,root用户登录,这时需要输入刚才查看的密码。

这样就表示已经root用户登录成功。
  使用以下命令修改密码

1
2
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;

这里有个问题,新密码设置的时候如果设置的过于简单会报错, 因为mysql默认安装了密码安全检查插件(validate_password), 可以使用SHOW VARIABLES LIKE ‘validate_password%’; 查看完整的密码规则。默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,我们在设置新密码时也要遵循这个策略。

2. 远程授权访问
  数据库在没有授权时,只支持本地访问。

1
2
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

%代表任意远程用户, 可以使用ip写法, 代表只有这个ip可以访问。
  这样就允许root用户使用password密码进行远程访问,在navicat上连接即可。

三、mysql8.0远程访问过程中遇到的问题

1. ERROR 1064 (42000)错误

1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '. to 'username'@'%'' at line 1

遇到这个问题,是版本升级后,语法不允许这个输入命令。解决方法,新建远程访问用户,再给这个新用户授权。命令如下:

1
2
3
create user 'myuser'@'%' identified by 'mypassword';             新建myuser用户,密码为mypassword
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'WITH GRANT OPTION; 授权myuser用户任意地址访问
FLUSH PRIVILEGES; 刷新权限

2.navicat连接远程数据库报1251错误

这种情况造成的原因,是因为加密规则的不同,8.0版本以前加密规则是mysql_native_password,8.0之后改为caching_sha2_password。解决方法就是将mysql用户登录密码规则还原成mysql_native_password。
  用如下命令查看用户信息,plugin项代表加密方式,并修改为mysql_native_password加密。

1
2
3
select host,user,plugin,authentication_string from mysql.user;              
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

这样再使用navicat连接远程数据库即可。

参考:
  1. CentOs7成功安装mysql5.7
  2. Centos7中 mysql5.7 用户 创建 、授权、远程登录
  3. Navicat连接远程数据库报1251的错误


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!