Skip to content

CentOS安装MySql

本次是CentOS8.1.1911安装Mysql8

卸载MariaDB

MariaDB是CentOS 8 默认自带,避免冲突

查看是否已安装

bash
rpm -qa | grep mariadb

如果没有任何输出,说明系统未安装 MariaDB

如果有输出结果,例如mariadb-server-10.5.9-1.el7.x86_64,就要进行删除

bash
sudo dnf remove mariadb* -y

最后输出Complete!即删除成功

切换vault源

先备份原来的源

bash
sudo mkdir -p /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/backup/

切换阿里vault源

bash
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo \
https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

清理缓存并重新生成

bash
sudo dnf clean all
sudo dnf makecache

如果看到类似下面输出,说明源已经恢复正常:

bash
Metadata cache created.

如果不切换源可能会报以下错误

txt
download metadata for repo 'AppStream'
Error: Failed to download metadata for repo 'AppStream'

因为而是 CentOS 8 已于 2021-12-31 停止官方维护,默认的 AppStream/ BaseOS仓库地址(mirror.centos.org)已经下线,dnf拉不到元数据就会报这个错。

安装MySQL仓库

bash
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm -y

若输出Complete!即安装成功

确认仓库已启用

bash
dnf repolist enabled | grep mysql

为以下结果即正常

image-20260718101558468

如果没有mysql80-community这一项,需要手动开启

bash
sudo dnf config-manager --enable mysql80-community

避免模块残留,先 reset 再 disable

sudo dnf module reset mysql
sudo dnf module disable mysql -y

安装MySQL8.0

先看看当前 mysql 模块状态

bash
sudo dnf module list mysql

image-20260718101732130

若看到以上mysql后面有 [d]enabled标记,我们需要禁用掉CentOS8自带的mysql模块

bash
sudo dnf module disable mysql -y

看到Complete!即成功

清理缓存并重建

bash
sudo dnf clean all
sudo dnf makecache

接下来安装mysql8.0

bash
sudo dnf install mysql-community-server -y

有类似如下结果就是正常

image-20260718102118272

可以检查版本看看有没有安装成功

bash
mysqld --version

有以下结果就可以

bash
/usr/sbin/mysqld  Ver 8.0.46 for Linux on x86_64 (MySQL Community Server - GPL)

启动 MySQL 并设置开机自启

启动MySQL,这条指令会卡一会,cpu占用也会突然很高

bash
sudo systemctl start mysqld

设置开机自启

bash
sudo systemctl enable mysqld

查看状态

bash
sudo systemctl status mysqld

看到 active (running)即正常

image-20260718102900178

获取 MySQL 初始 root 密码

MySQL 8 安装后会自动生成临时 root 密码(MySQL 8 特性)

运行如下指令查看密码

bash
sudo grep 'temporary password' /var/log/mysqld.log

这个密码要先复制下来

image-20260718102946866

MySQL 安全初始化

bash
sudo mysql_secure_installation

上面指令输入后会让你输入刚才获取的初始密码

直接粘贴或者输入,有的终端粘贴不了,手动输入就很难受了

image-20260718103152490

输入完之后会让你输入你的新密码,和确认新密码

把你自己的密码输入两遍就行,注意:密码要有大写字母、小写字母、数字、特殊符号

image-20260718103304844

密码输入完成后,会有几个选项让我们选,全部输入y然后回车就行

image-20260718103508029

主要是这么几个问题

  • 移除匿名用户:Y
  • 禁止 root 远程登录(先选 Y,后面可再开)
  • 移除 test 数据库:Y
  • 重载权限表:Y

登录Mysql

输入以下指令登录mysql

bash
mysql -u root -p

然后会让你输入刚才设置的密码,输入后如果是这样的就代表成功

mysql>代表这不是终端命令行了,这后面需要输入sql语句

image-20260718103649800

然后执行一条sql语句

sql
SELECT VERSION();
SHOW DATABASES;

如果是这样的,就代表查询成功,sql语句没问题

image-20260718103741432

接下来退出就行,执行

sql
EXIT;

退出成功会给你说拜拜

image-20260718103855326

开启远程连接

开启远程连接之后,我们就可以使用navicat或者winscp这种工具连接数据库了

执行以下指令开启sql语句书写模式

bash
mysql -u root -p

然后输入如下sql语句

注意要把羡慕两个强密码处修改为刚才设置的密码

sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码';
CREATE USER 'root'@'%' IDENTIFIED BY '你的强密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

sql说明

修改本地 root 密码

sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码';

创建远程 root 用户

sql
CREATE USER 'root'@'%' IDENTIFIED BY '你的强密码';

授予全部权限

sql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

刷新权限缓存

sql
FLUSH PRIVILEGES;

退出

sql
EXIT;

如果看到都是Query OK就行

image-20260718104508973

然后修改配置文件

bash
sudo vi /etc/my.cnf

按i进入编辑模式,然后确认或者添加如下内容

txt
bind-address=0.0.0.0

image-20260718104740880

然后退出编辑:按ESC,输入:wq然后回车

接下来重启mysql

bash
sudo systemctl restart mysqld

防火墙放行3306

bash
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

看到输出success即为成功

远程连接

虚拟机终端输入

bash
ip addr

查找ens*开头的一项,我的是ens-160

image-20260718105424441

看到IP地址一项,假如我的地址是是192.168.150.100,复制这个ip地址

DBX

打开数据库连接软件,我是用的是DBX,一个免费开源媲美navicat的软件

点击新建连接

image-20260718110238938

选择MySQL,点击下一步

image-20260718110301421

主机填入刚才的ip地址,端口默认是3306,密码是上面我们给mysql设置的强密码image-20260718105233332

点击测试,显式连接成功就没问题,就可以直接连接了

然后新建个数据库,建表,添加几个测试数据

image-20260718105846125

如果是Navicat,点击左上角连接

image-20260718110415153

选择MySQL,下一步

image-20260718110442219

输入我们的主机名,和强密码,点击测试连接

image-20260718110550461

显式连接成功就可以确定,然后正式连接了

可以看到这里有刚才在DBX中创建的users

image-20260718110644499

MIT Licensed