1.前言
本篇博客将演示在Centos7中安装配置 Mysql5.7(这个版本是当前比较稳定的版本,所以选择这个版本进行演示)下面是本篇博客演示的系统环境,其他版本的安装方法也大同小异,这里小编就不过多的介绍Mysql的其他基础知识了。
// 演示环境
VMware Workstation 16.2.1 // 虚拟机软件
CentOS-7-x86_64-Minimal // 系统版本
mysql-5.7.26 // mysql版本
2.环境准备
(1)冲突问题
有些版本的Centos会自带一个数据库 mariadb
会跟mysql冲突,有点话要先删除,可以执行以下命令检查系统中是否存在mariadb 的相关安装包。
$ rpm -qa|grep mari
如果有的话(如上)则执行以下命令进行卸载
$ rpm -e --nodeps mariadb-libs
(2)安装包准备
首先执行以下命令 在 /usr/local 目录下新建一个 mysql 文件夹
$ mkdir /usr/local/mysql
进入 /usr/local/mysql 目录
$ cd /usr/local/mysql
使用以下命令 进行安装包的下载 使用前要确保系统已经安装了wget 如果没有则执行
yum -y install wget
进行安装
$ wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
3.开始安装
上一步我们已经将安装包下载到 /usr/local/mysql
目录下 接下来我们执行以下命令解压安装包
(1) 解压安装包
$ tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
(2) 安装mysql
接下来我们才开始正真安装mysql 依次运行下面几条命令 一定要按照顺序执行
$ rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm --force --nodeps
(3) 关于最后一条命令的 --force --nodeps
关于这个参数 小编觉得要单独提出来说一点 很多网上的文章中其实是不带这个 --force --nodeps
参数的 因为不带也可以正常安装 小编这里带上这个参数是为了避免一个错误
// 错误信息如下
warning:mysql-community-server-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
警告:MySQL-server-5.5.46-1.linux2.6.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
原因: 这是由于yum安装了旧版本的GPG keys造成的,而解决办法就是在后面加上 --force --nodeps 从 RPM 版本 4.1 开始,在安装或升级软件包时会检查软件包的签名
4.启动Mysql
(1)启动mysql服务
经过上面的安装,如果没有报错的话,证明已经安装成功了,mysql在安装的过程中会自动帮我们注册为系统服务,是不是非常的人性化,服务名叫mysqld
。接下来我们就可以执行以下命令进行mysql服务端的启动了。
$ systemctl start mysqld.service
(2)一些常用命令
这里小编还给各位读者朋友准备了一些操作mysqld服务的一些常用命令
$ systemctl daemon-reload //重载系统服务
$ systemctl list-unit-files --type service //查看全部服务命令
$ systemctl status mysqld.service // 查看mysqld服务状态
$ systemctl enable mysqld.service //设置mysqld开机自启动
$ systemctl disable mysqld.service // 关闭mysqld开机启动
$ systemctl start mysqld.service // 启动mysqld服务
$ systemctl stop mysqld.service // 停止mysqld服务
$ systemctl restart mysqld.service // 重启mysqld服务
5.Mysql配置
(1)查看mysql默认分配的root密码
mysql在安装时会自动给root用户随机生成一个密码,执行以下命令就可以查看分配好的默认密码。
$ grep "password" /var/log/mysqld.log
(2)登陆mysql
记录好密码后 则可以执行以下命令进行MySQL的登陆 这里 -u
是指定用户的意思而 -p
就是指定登陆密码的意思,这里密码是依照个人环境而定 这里系统随机生成的密码是: CkphQ0;J>A6o
$ mysql -u root -p
会提示输入密码 这时输入上面查看到的随机密码即可
这样我们就登陆成功了
(3)设置mysql root用户密码
在登陆成功后才可以进行密码的修改 在修改密码之前我们先依次执行以下命令修改一下密码设置策略,这样即使我们设置简单的密码也可以,在实际生产环境中密码一定要设置的比较复杂小编这里只是演示。
// validate_password_policy默认值(MEDIUM)
$ set global validate_password_policy=LOW;
$ set global validate_password_check_user_name=OFF;
$ set global validate_password_length=6;
$ set global validate_password_mixed_case_count=0;
$ set global validate_password_number_count=0;
$ set global validate_password_special_char_count=0;
修改完后执行以下命令修改root用户密码 这里我设置的密码是 123456
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
提示设置成功 运行以下命令时密码生效
$ flush privileges;
在命令行执行以下命令则可以退出客户端 下次登录时就需要我们设置的密码了
$ exit;
(4)关于mysql密码策略
登录后 可以执行以下命令可以查看当前密码初始化的策略
$ SHOW VARIABLES LIKE 'validate_password%';
validate_password_dictionary_file //指定密码验证的文件路径
validate_password_length //固定密码的总长度
validate_password_mixed_case_count //整个密码中至少要包含大/小写字母的总个数
validate_password_number_count //整个密码中至少要包含阿拉伯数字的个数
validate_password_policy //指定密码的强度验证等级,默认为 MEDIUM
validate_password_special_char_count // 整个密码中至少要包含特殊字符的个数
LOW //只验证长度
MEDIUM // 验证长度、数字、大小写、特殊字符
STRONG // 验证长度、数字、大小写、特殊字符、字典文件
这些都是可以修改的,修改方式就和上面我们修改策略等级一样
6.远程登录
(1)更改访问权限
注意:这一段目前小编安装这个版本的测试了很多次还是无法远程连接,所以建议小伙伴们不要进行下面的操作,不知道是不是我本地的问题,所以我还是保留了以下内容,我新安装的mysql8的版本可以配置远程连接成功,有兴趣的朋友可以期待以下
当前我们启动的mysql服务是只允许本地访问的,因此在远程登录前我们先要更改权限,依次执行以下命令修改当前数据的访问权限。
// 注意上面提示
use mysql;
update user set user.Host='%' where user.User='root';
执行完上一条命令执行下面的命令刷新一下,使修改立即生效
$ flush privileges;
(2)开放端口
Mysql默认远程登录监听的端口是3306所以我们要放行服务器3306的端口,可以执行以下命令放行当前服务器的3306端口
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent // 放行防火墙8080端口(–permanent永久生效,没有此参数重启后失效)
执行以上命令放行后,需要重启一下防火墙
// 重启防火墙
$ firewall-cmd --reload
(3)防火墙常用命令
这里小编还给大家提供了一些防火墙服务的常用命令
$ firewall-cmd --state // 查看防火墙状态
$ systemctl stop firewalld.service // 关闭防火墙(不推荐使用)
$ systemctl disable firewalld.service // 阻止防火墙开机启动
$ firewall-cmd --reload // 重启防火墙
$ firewall-cmd --zone=public --list-ports // 查看防火墙所有开放的端口
$ firewall-cmd --permanent --zone=public --remove-port=3306/tcp // 关闭3306端口
完成上面的步骤,如果没有别的问题的话,我们就可以使用工具远程连接我们的服务器了
7.结尾
本篇博客就到此演示完毕了,这是我踩bug最多的一篇博客,特别是远程连接的那个地方,如果有好的解决方案的小伙伴可以在评论区提出来,写这篇博客我学到了很多东西,以后的内容会更加细节,我测试多次没问题才会发文出来,这篇博客的bug卡了我一天。后续将更新更多优质内容,喜欢的小伙伴不妨给小编点个订阅。