CentOS7.9 安装 mysql5.7
简介
在 CentOS 7 上面安装 MySQL5.7 经历了一点小挫折,特此记录,给有需要的朋友做个参考。
我的云主机 CentOS 版本
1 | lsb_release -a |
当然你要是不想安装指定版本的 MySQL,直接使用 yum install mysql
也可以。
安装 MySQL
因为现有工程的各种缘故,我需要在云主机上面安装 MySQL5.7 版本。
在网上找了挺多安装方法但总是事与愿违,会出现各种各样的问题,还好在 MySQL 官方文档 找到了解决方案。所以说遇到问题还是要到官网去找方案。
如果你已经使用 root
身份登录了主机,在下面的步骤中可以不使用 sudo
。
1、Adding the Yum Repository
1 | sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm |
如果出现类似 Failed to set locale, defaulting to C
这样的错误,说明该源无法找到,可以换中方式:
1 | sudo yum localinstall mysql57-community-release-el7.rpm |
关于源可以在 http://repo.mysql.com/ 找。
2、Selecting a Release Series
执行如下命令前,记得安装 yum -y install yum-utils
1 | yum repolist all | grep mysql |
3、Install
1 | sudo yum install mysql-community-server |
注意:如果你是 CentOS8
,还需要在执行此步骤操作前,需要执行如下命令:
1 | sudo yum module disable mysql |
在安装过程中,可能会出现下面的错误(此时 MySQL 并没有安装成功)
Public key for mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm is not installed
Failing package is: mysql-community-libs-compat-5.7.38-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
需要升级一下 GPG 然后重新安装,方式如下:
1 | rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 |
4、Start mysqld
1 | sudo service mysqld start |
下面给出安装 MySQL 成功后,默认的配置文件路径,方便后续使用。
- 配置文件:
/etc/my.cnf
- 日志文件:
/var/log/mysqld.log
- 启动脚本:
/usr/lib/systemd/system/mysqld.service
- socket文件:
/var/run/mysqld/mysqld.pid
使用 MySQL
经过上面简单 4 步就可以轻松的完成 MySQL 的安装,接下来我们开始使用它。
1 | mysql -uroot -p |
直接回车(Enter
),提示如下错误:
1 | ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) |
解决上述问题,需要先想办法登入 MySQL,然后再修改 root 用户的密码。
如何解决这个错误而进行登入呢?
MySQL 安装完成之后,生成的默认密码在 /var/log/mysqld.log
日志文件中,我们可以使用 grep
命令在日志中找到临时密码(temporary password)。
1 | grep 'temporary password' /var/log/mysqld.log |
可以看到临时密码信息:2022-04-30T04:40:47.234502Z 1 [Note] A temporary password is generated for root@localhost: Tq%y:sUnC7;d
,用该密码登入 MySQL 即可。
MySQL 5.7
默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含大小写字母、数字和特殊符号,并且长度不能少于8位。如果设置的密码不符合规范和要求,进行对应的操作会提示类似密码不符合规范的错误。可以查看 MySQL官网密码详细策略 了解更多这方面的知识。
登入成功之后,修改 root 用户的密码:
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!'; |
后续可以通过如下方式(update)修改 root 用户的密码:
1 | update user set authentication_string=password('MyNewPass4!') where user='root'; |
以上操作完成后,需要重启一下 MySQL 服务。
1 | service mysqld restart |
另外还有一种解决方案,就是修改 my.cnf
配置文件
1 | sudo vim /etc/my.cnf |
在 [mysqld] 下面新增 skip-grant-tables
1 | [mysqld] |
同理,以上操作完成后需要重启一下 MySQL 服务。新增的这个配置再次登录 MySQL 无需输入 root 密码。
登入后再用上述方法设置 root 用户的密码即可,修改完成后记得去掉 skip-grant-tables
这个配置。
修改默认编码
MySQL 的字符编码,可以通过下述方式查看
1 | show variables like 'character%'; |
我们通过编辑 /etc/my.cnf
配置文件来改变默认编码,分别在对应的标签下面增加如下内容即可。
1 | [mysqld] |
需要重启一下 MySQL 服务。
1 | service mysqld restart |
增加用户
默认只允许 root 用户在本地(即本机上)登录,如果其它机器要连接或者访问 mysql,必须添加一个允许远程连接或者访问的帐户。
当然你也可以设置让 root 用户进行远程访问,但这样就很不安全,一般也不会这么做。
1 | select host,user,authentication_string from user; |
host | user | authentication_string |
---|---|---|
localhost | root | *88195A6507F4892C6CED9F6E30BA6C609AF5AFA7 |
localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
下面新增一个允许远程连接的帐户 lisi
,注意设置的密码要符合 MySQL 复杂度要求,否则设置会失败。
1 | GRANT ALL PRIVILEGES ON *.* TO 'lisi'@'%' IDENTIFIED BY 'lisi2018!A' WITH GRANT OPTION; |
再次查看一下用户会发现多了 lisi
这个用户。
host | user | authentication_string |
---|---|---|
localhost | root | *88195A6507F4892C6CED9F6E30BA6C609AF5AFA7 |
localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
% | lisi | *86BA32081A204071832FE6D1DECD57D9519D6411 |
重置 root 密码
如果不小心忘记了 MySQL 的 root 用户登录密码,不要紧张,通过下面简单几步的操作就可以重置。
1、修改配置文件
在 /etc/my.cnf
(可能你的配置文件在其他目录如 /etc/mysql/my.cnf
),文件中新增
1 | skip-grant-tables |
2、重启服务
1 | service mysql restart |
3、登录
在命令行直接输入 mysql
即可。
1 | mysql |
4、重置 root 密码
依次执行如下命令即可。
1 | USE mysql; |
5、再次修改配置文件
记得注释掉在第1步中增加的内容
1 | skip-grant-tables |
6、重启 mysql 服务
7、使用 root 登录
1 | mysql -urot -p |
如果你在安装过程中,遇到了文中没有提到的问题,请耐心解决也可以给我留言,一起进步!
祝大家五一节日快乐,生活幸福