admin管理员组

文章数量:1571755

MySQL8.0安装配置(Linux版)

声明:本文基于centos 7.6

可从myql官网查看linux操作系统对应的版本MySQL :: Download MySQL Yum Repository

注意:安装时需要linux系统版本和rpm包匹配,否则安装过程会报找不到依赖的错误,致使安装不成功

1.安装mysql
wget -i -c http://dev.mysql/get/mysql80-community-release-el7-5.noarch.rpm
yum -y install mysql80-community-release-el7-5.noarch.rpm
yum -y install mysql-community-server

启动并查看MySQL状态:

systemctl start  mysqld.service
systemctl status mysqld.service
2.配置

以上步骤安装完成后mysql会根据mysql8的密码规则自己生成一个密码,可通过如下方式查看

grep "password" /var/log/mysqld.log

可以看到这个密码比较难记,接下来重置密码

先使用这个生成的密码连接进入mysql

mysql -uroot -p
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

报错了😭

这个报错意思就是不符合当前mysql的密码规范,应该是密码设置过于简单。

这个在mysql5.7可通过下面命令解决

set global validate_password_policy=0;
set global validate_password_length=1;

但在mysql8中会报错

ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'

那先查看当前密码规范

SHOW VARIABLES LIKE 'validate_password%';

又报了这个错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

好家伙,这搁这儿玩循环呢。。。

先重置一个跟上面生成的密码差不多的,

ALTER USER 'root'@'localhost' IDENTIFIED BY 'qazWsx>+&3ed';

然后再查看密码规范

可以看到与mysql5.7的区别,*_password_* 变为了 *_password.*

接下来设置

set global validate_password.policy=0;
set global validate_password.length=6;

然后就可以愉快的设置简单密码了:happy:

密码策略说明:

validate_password插件是mysql5.6以后可以引入的一个新密码校验插件(使用这个插件至少要求mysql5.6.6之后的版本),在mysql5.7之后的版本上会自动安装。

控制validate_password行为的系统参数

  • validate_password.policy:密码验证策略 LOW(0) MEDIUM(1) STRONG(2)。
    • LOW(0) : 校验级别最低,只校验密码长度,只要长度不小于validate_password.length一样即可,默认长度是8位
    • MEDIUM(1):这个时候首先要满足的是validate_password.policy=0时的验证要求。然后现去验证密码中的数字个数,大小写个数,特殊字符个数。这些又分别由validate_password.number_count,validate_password.mixed_case_count,validate_password.special_char_count 这几个参数来控制。
    • STRONG(2):这个时候必须先满足validate_password.policy=1的要求,然后它还追加了一个,对于密码中任意连续4个(或4个让上)字符不得是字典中的单词(validate_password.dictionary_file)
  • validate_password.length:密码长度的最小值。
  • validate_password.number_count:密码中数字的最小个数。
  • validate_password.mixed_case_count:大小写的最小个数。
  • validate_password.special_char_count:特殊字符的最小个数。
  • validate_password.dictionary_file:字典文件

参考 : https://blog.csdn/wltsysterm/article/details/79649484

远程连接

在mysql5.7中我们直接通过以下命令就可以修改配置使mysql可以远程访问

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

但在mysql8中执行该命令会报错

mysql8的分配权限不能带密码隐式地创建账号了,要先创建账号再设置权限。

执行以下语句,查看mysql.user表中的你想用于远程访问的用户的host字段,将其改为%(标识任意ip都可访问,当然也可以指定ip)

SELECT user,host FROM mysql.user;
RENAME USER 'root'@'localhost' TO 'root'@'%';

提示:如果依然无法通过navicat等可视化软件连接到mysql,有关caching_sha2_password 报错的问题。是因为MySQL 8.0 默认认证方式改为 SHA2 了,如果软件不支持 SHA2 插件认证方式,那么就会报错。

解决办法

方法一:可以创建一个使用密码作为认证方式的账号。

CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

方法二:当然你也可以把现有使用 caching_sha2_plugin 认证的账号改为使用密码认证。

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

参考 : https://kalacloud/blog/how-to-allow-remote-access-to-mysql

以上是本人在centos7.6上安装mysql8遇到的一些问题,做一下记录。

本文标签: 远程访问密码简单Linuxamp