系统环境:CentOS-7-x86_64-Minimal-1804
MySQL官方帮助文档:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
wget
下载工具和yum-config-manager
命令需要安装yum-utils
包$ sudo yum install -y wget yum-utils
官网网址:https://dev.mysql.com/downloads/repo/yum/
CentOS 7
选择Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package
以下是下载链接 (截至2018-12-11最新)
$ wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
添加到MySQL Yum 的仓库
$ sudo rpm -Uvh mysql80-community-release-el7-1.noarch.rpm
用以下命令查看MySQL YUM库中的所有版本,并查看其中哪些已启用或禁用
$ sudo yum repolist all | grep mysql
$ sudo yum repolist enabled | grep mysql
默认安装最新的GA系列(GA为Generally Available一般可用版本,稳定版),不需要其他配置。
以下命令禁用 8 系版本并启用 5.7 系版本
$ sudo yum-config-manager --disable mysql80-community
$ sudo yum-config-manager --enable mysql57-community
$ sudo yum install -y mysql-community-server
$ sudo systemctl start mysqld.service
$ sudo systemctl status mysqld.service
$ sudo systemctl enable mysqld.service
$ grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'
$ mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密码';
注意:MySQL的validate_password插件默认安装。 这将要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且密码总长度至少为8个字符。
安装MySQL 5.7或更高版本的话,不需要运行,因为 Yum 安装程序已经执行了该程序的功能。
$ mysql_secure_installation
New password:
Re-enter new password:
是否安装密码检测插件?
Would you like to setup VALIDATE PASSWORD plugin?Press
是否更改root密码?
Change the password for root ? ((Press y|Y for Yes, any other key for No) :
是否移除匿名用户呀?
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
是否禁止root远程登陆呀?
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
是否删除测试数据库呀?
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
是否现在就刷新授权表呀?
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
在Ubuntu
下,使用sudo
安装mysql
后,普通用户登录时会出现该问题
$ mysql -uroot -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
原因:
可以查看一下user
表,root
的plugin
是auth_socket
,
正常情况用密码登陆的plugin
应该是mysql_native_password
mysql> select user, plugin from mysql.user;
+-----------+-----------------------+
| user | plugin |
+-----------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| dev | mysql_native_password |
+-----------+-----------------------+
解决措施:
只要把auth_socket
改成mysql_native_password
就行
$ sudo mysql -uroot -p
mysql> USE mysql;
mysql> SELECT user, plugin FROM user;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> SELECT user, plugin FROM user;
mysql> exit;
$ sudo systemctl restart mysqld.service