CentOS 8 默认是可以安装 MySQL 8。
https://dev.mysql.com/downloads/repo/yum/
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
第一步,添加源文件
手动添加文件 /etc/yum.repos.d/mysql-community.repo,然后加入下面内容到文件里。
安装 MySQL 8.0
[mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
安装 MySQL5.7
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
检查源
yum repolist enabled | grep mysql dnf repolist enabled | grep mysql
第二步,安装 MySQL
关闭默认 MySQL 模块
sudo yum module disable mysql sudo dnf module disable mysql
安装
sudo dnf install mysql-community-server sudo dnf install mysql-community-server --nobest
如果提示
Curl error (37): Couldn't read a file:// file for file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql]
解决方法
第一种方案,设置gpgcheck为0,就是不需要检查gpgkey。
# enable to use MySQL 5.6 [mysql56-community] name=MySQL 5.6 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/ enabled=1 gpgcheck=0 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
第二种方案 下载gpgkey
//下载RPM-GPG-KEY-mysql wget http://repo.mysql.com/RPM-GPG-KEY-mysql -O /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
第三步,修改 root 密码
官方文档提示 MySQL 5.7 和更高版本不要使用 mysql_secure_installation
Do not run mysql_secure_installation after an installation of MySQL 5.7 or higher, as the function of the program has already been performed by the Yum repository installation.
查看临时密码
grep 'temporary password' /var/log/mysqld.log
使用临时密码登录并修改密码
shell> mysql -uroot -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
第四步,修改 MySQL 编码
$ mysql> show variables like 'character%';
修改 /etc/my.cnf 在 [mysqld] 下,加入 character_set_server=utf8,重启 MySQL 生效。
备注:
1,在CentOS 8 中使用 MySQL 5.7 有一个问题,就是MySQL无法自动在 /var/run 中创建 /var/run/mysqld 。网上看到有人说,把mysql.pid 设置到 /var/lib/mysql 中,实际上这样设置以后,systemctl restart mysql 无法正常工作。最后,还是退回使用 MySQL 5.6。 暂时还是不能在 CentOS 8中使用 MySQL 5.7,暂时乖乖的使用 MySQL 5.6吧。这个问题耗费了我 6个小时左右。部分网站也6小时左右无法正常打开。
2,有些主机商默认开启了SELinux,一定要关闭。
2.1 查看SELinux状态:
/usr/sbin/sestatus -v # 如果SELinux status参数为enabled即为开启状态
2.2 永久关闭 SELinux,修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled。重启机器即可
3, 设置默认MySQL默认编码
mysql>status 查看默认编码,如果characterset是latin1,打开 /etc/my.cnf,在 [mysqld] 段增加下面的代码,然后重启characterset即可变成utf8
character-set-server=utf8 collation-server=utf8_general_ci
修改时间 2021-07-13