1. 准备工作
1.1 安装CentOS虚拟机
教程[点击跳转]
1.2 将CentOS虚拟机设置为静态IP,否则你每次重启虚拟机后连接数据库都要重新查IP
教程[点击跳转]
1.3 如果有安装过MySQL,请先卸载MySQL
教程[点击跳转]
1.4 虚拟机执行命令su切换到root账号(输入密码时不会显示密码,实际已经输入)
2.安装MySQL(本文以CentOS 7下安装MySQL 8为例)
2.1 删除mariadb数据库软件包
2.1.1 执行命令rpm -qa|grep mari查询mariadb数据库软件包
mariadb是CentOS自带的数据库,装MySQL前要先卸载,但不一定每一个CentOS镜像都有自带mariadb数据库,如果查到没有则直接跳过此步 - #查询mariadb数据库软件包
- rpm -qa|grep mari
复制代码
我虚拟机上的mariadb数据库软件包如图
2.1.2 执行命令rpm -e --nodeps 包名来删除软件包 - #删除软件包
- rpm -e --nodeps marisa-0.2.4-4.el7.x86_64 #包名用你自己查询到的
- rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 #包名用你自己查询到的
复制代码
2.2 安装MySQL
2.2.1 执行命令wget -c 链接下载rpm源(根据CentOS版本自行选择) - #CentOS8 mysql8 rpm源
- wget -c https://dev.mysql.com/get/mysql80-community-release-el8-5.noarch.rpm
- #CentOS7 mysql8 rpm源
- wget -c https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
- #CentOS6 mysql8 rpm源
- wget -c https://dev.mysql.com/get/mysql80-community-release-el6-7.noarch.rpm
- #如果wget命令无效,先执行下面这个命令安装wget
- yum -y install wget
复制代码
2.2.2 执行命令rpm -ivh 包名安装rpm源(根据下载的rpm源自行选择) - #CentOS8 安装mysql8
- rpm -ivh mysql80-community-release-el8-5.noarch.rpm
- #CentOS7 安装mysql8
- rpm -ivh mysql80-community-release-el7-7.noarch.rpm
- #CentOS6 安装mysql8
- rpm -ivh mysql80-community-release-el6-7.noarch.rpm
复制代码
2.2.3 执行命令yum -y install mysql-server安装mysql服务 - #安装mysql服务
- yum -y install mysql-server
复制代码
2.3 启动MySQL
2.3.1 执行命令systemctl start mysqld启动MySQL - #查看mysql运行状态
- systemctl status mysqld
- #启动mysql
- systemctl start mysqld
- #停止mysql
- systemctl stop mysqld
- #重启mysql
- systemctl restart mysqld
复制代码
2.3.2 执行命令systemctl enable mysqld开启MySQL开机自启动 - #开启mysql开机自启动
- systemctl enable mysqld
- #关闭mysql开机自启动
- systemctl disable mysqld
复制代码
2.4 设置MySQL密码
2.4.1 执行下方命令获取临时密码 - //获取MySQL临时密码
- grep 'temporary password' /var/log/mysqld.log
复制代码
我的MySQL临时密码如图,直接复制避免输错
2.4.2 执行命令mysql -uroot -p登录MySQL(密码是上面获取的临时密码)
2.4.3 用临时密码登录后执行下方命令设置MySQL永久密码 - //根据下图中的密码策略设置mysql数据库密码(你不设置密码就无法进行其它操作)
- alter user 'root'@'localhost' identified by 'password@0';
复制代码
你的密码不符合默认密码策略的话是无法设置成功的,mysql8默认密码策略如下图(最小8位,至少含义一个数字,至少含义一个特殊字符)
2.4.4 执行下方命令修改密码策略
只能临时修改密码策略,重启MySQL后自动恢复默认密码策略,想要永久修改需要改MySQL配置文件,一般来说临时修改密码策略就够了,又不天天改密码 - //设置密码长度
- set global validate_password.length = 6;
- //设置密码风险等级(等级越高要求密码越复杂),分为0、1、2级
- set global validate_password.policy = 0;
- //查询密码策略
- show variables like 'validate_password.%';
复制代码
2.4.5 修改完密码策略后执行下方命令重新设置你的MySQL密码 - //设置mysql数据库密码 (这里是密码)
- alter user 'root'@'localhost' identified by '123456';
复制代码
2.5 允许外部访问该MySQL数据库
2.5.1 依次执行下方命令即可允许外部访问该MySQL数据库 - //创建用户
- (远程连接用的账号) (远程连接用的密码)
- create user 'root'@'%' identified by 'mypassword';
- //分配权限,运行远程连接
- (允许root账号远程连接)
- grant all privileges on *.* to 'root'@'%' with grant option;
- //刷新权限
- flush privileges;
复制代码
2.5.2 尝试用Navicat连接虚拟机上的MySQL数据库,但是连接失败,这是CentOS的防火墙导致的,所以无法连接
2.6 防火墙(CentOS7)
CentOS7和CentIOS6防火墙命令不一样,CentOS6防火墙命令请自行查找
2.6.1 执行下方命令直接关闭防火墙(不推荐,不安全) - #关闭防火墙
- systemctl stop firewalld.service
复制代码
2.6.2 执行下方命令开启指定端口允许外部访问 - #永久允许该端口被外部访问(3306是MySQL默认端口号)
- firewall-cmd --permanent --add-port=3306/tcp
- #重启防火墙
- firewall-cmd --reload
复制代码
修改MySQL端口号教程[点击跳转]
2.6.3 防火墙命令概览 - #关闭防火墙
- systemctl stop firewalld.service
- #禁止防火墙开机自启动
- systemctl disable firewalld.service
- #永久允许该端口被外部访问
- firewall-cmd --permanent --add-port=3306/tcp
- #临时允许该端口被外部访问
- firewall-cmd --add-port=3306/tcp
- #禁止该端口被外部访问
- firewall-cmd --remove-port=3306/tcp
- #重启防火墙
- firewall-cmd --reload
复制代码
2.7 重新远程连接MySQl数据库
Navicat下载[点击跳转]
连接成功
|