CentOS 7 下安装 MySQL 5.7 or 8

系统环境: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

MySQL 安装

下载 MySQL Yum 仓库

官网网址: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 版本

用以下命令查看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

安装MySQL ( Installing MySQ

$ sudo yum install -y mysql-community-server

启动 MySQL Server

  • 启动 MySQL Server:
$ sudo systemctl start mysqld.service
  • 检查MySQL Server的状态:
$ sudo systemctl status mysqld.service
  • 设置开机启动
$ sudo systemctl enable mysqld.service
  • 安装时默认创建了“root”@“localhost”,密码也被随机设置,在日志文件中记录。
    可以下命令查看:
$ grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'
  • 更改root密码:
$ mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密码';

注意:MySQL的validate_password插件默认安装。 这将要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且密码总长度至少为8个字符。

MySQL 安全初始化 (仅适用于MySQL 5.6)

安装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表,rootpluginauth_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

你可能感兴趣的:(Linux)