Centos yum 安装MySQL
MySQL安装之yum安装
在CentOS7中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。
安装MySQL存储库
首先,将MySQL Yum存储库添加到系统的存储库列表中
- 去下载页面下载MySQL yum存储库 :MySQL yum 存储库
- 选择并下载适用于您平台的发行包。(这里我选择的是Linux 7 存储库)
- 下载该发行包
wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
- 使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。
yum -y localinstall mysql80-community-release-el7-3.noarch.rpm
- 通过以下命令检查是否已成功添加MySQL Yum存储库
yum repolist enabled | grep "mysql.*-community.*"
选择安装MySQL的版本
- 使用MySQL Yum存储库时,默认情况下会选择最新的GA系列(当前为MySQL 8.0)进行安装。如果这是您想要的,则可以跳到下一步
- 在MySQL Yum存储库中,不同版本的MySQL Community Server版本托管在不同的子存储库中。默认情况下,默认启用最新GA系列(当前为MySQL 8.0)的子存储库,而所有其他系列(例如,MySQL 5.7系列)的子存储库均被禁用。使用下面命令查看MySQL Yum存储库中的所有子存储库,并查看启用或禁用的子存储库
yum repolist all | grep mysql
- 通过手动编辑/etc/yum.repos.d/mysql-community.repo 文件来选择发行系列,编辑enabled选项。指定 enabled=0禁用子存储库或 enabled=1启用子存储库。例如,要安装MySQL 5.7,请确保您具有 enabled=0用于MySQL 8.0的上述子存储库条目,并且具有enabled=1用于5.7系列的条目
# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
- 通过运行以下命令并检查其输出来验证是否已启用和禁用正确的子存储库
yum repolist enabled | grep mysql
使用yum安装MySQL了
yum -y install mysql-community-server
这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。
MySQL数据库配置
- 首先启动MySQL
systemctl start mysqld.service
systemctl status mysqld.service
- 此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
grep "password" /var/log/mysqld.log
初始化MySQL
运行下列命令对MySQL进行安全性配置。
mysql_secure_installation
安全性的配置包含以下五个方面:
- 重置root用户的密码。
Enter password for user root: #输入上一步获取的root用户初始密码
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration of the plugin.
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y #是否更改root用户密码,输入Y
New password: #输入新密码,长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号可以是()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/
Re-enter new password: #再次输入新密码
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
- 输入Y删除匿名用户账号。
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y #是否删除匿名用户,输入Y
Success.
- 输入Y禁止root账号远程登录。
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y #禁止root远程登录,输入Y
Success.
- 输入Y删除test库以及对test库的访问权限。
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y #是否删除test库和对它的访问权限,输入Y
- Dropping test database...
Success.
- 输入Y重新加载授权表。
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y #是否重新加载授权表,输入Y
Success.
All done!
安全性配置的更多详情,请参见MySQL官方文档。
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
这里有个问题,新密码设置的时候如果设置的过于简单会报错: ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 原因是因为MySQL有密码设置的规范,具体是与validate_password_policy的值有关:
MySQL完整的初始密码规则可以通过如下命令查看:
SHOW VARIABLES LIKE 'validate_password%';
密码的长度是由validate_password_length决定的,而validate_password_length的计算公式是:
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
解决方法就是修改密码为规范复杂的密码
或者我们要把密码规则改一下,执行下面sql就可以了:
set global validate_password_policy=0;
set global validate_password_length=1;
- 但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
yum -y remove mysql80-community-release-el7-3.noarch
附:
可视化工具的登录授权:
如果授权不成功,请查看防火墙 如果还不能用可视化的客户端进行连接,需要我们进行授权:
grant all privileges on *.* to root@'%' identified by '数据库密码';
参数说明如下。
*.*
参数,第一个"*"
为数据库占位符,如果填"*"
则代表所有数据库。第二个"*"
为数据库对象占位符,如果填"*"
则代表数据库中所有对象。'root'@'%'
参数,root为授权登录的数据库账户,"%"
为IP地址占位符。假如要限制只能在1.1.1.1登录,则需要把"%"
改成1.1.1.1。如果填"%"
则代表允许任何IP地址登录。- 执行如下SQL语句,刷新权限。
flush privileges;
- 确认远程MySQL客户端可正常连接数据库。