前提配置:
物理机系统:Windows11 家庭中文版(已激活),内存 32G,已联网
VMware 版本:17.6.1
CentOS 系统版本:CentOS Linux release 7.9.2009(Core)
CentOS 已安装 vim预安装 MySQL 版本:MySQL5.7.38
一、卸载残余MySQL
1.1 检查是否已有MySQL
从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!这里依旧以mysql为例进行展示。
rpm -qa | grep mysql
这里返回空值,说明没有安装。
1.2 删除可用
这里执行以下安装命令是无效的。
因为centos-7默认是Mariadb,所以执行以下命令只是更新Mariadb数据库。
yum install mysql
所以要先删除可用。
如果上面查询结果类似这样的,就需要先删除:
yum remove mysql
删除完成,再次查询,如果还有如下类似残留,执行如下命令:
sudo rpm -e --nodeps mysql-community-release-el7-5.noarch
sudo rpm -e --nodeps mysql-community-common-5.6.51-2.el7.x86_64
sudo rpm -e --nodeps mysql-community-libs-5.6.51-2.el7.x86_64
其中具体版本需要根据自己的查询结果更改。
二、安装并配置MySQL
因为官方的yum镜像源下载慢,国内的又不稳定,我选择用压缩包安装的方式。
2.1 下载安装包
阿里云镜像地址:https://mirrors.aliyun.com/mysql/MySQL-5.7/
搜索:mysql-5.7.38-el7-x86_64.tar.gz,并下载(707MB的那个)。
2.2 上传文件
将下载的【mysql-5.7.38-el7-x86_64.tar.gz】文件上传到/usr/local/package
目录下。
cd /usr/local/package
ll
2.3 准备工作
检查系统依赖:
MySQL 运行依赖一些基础系统库,使用以下命令安装必要的依赖包
sudo yum install -y libaio numactl
创建MySQL用户和组
为 MySQL 服务创建专用的用户和组:
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
2.4 解压安装包
通常将 MySQL 安装到 /usr/local/mysql 目录。
sudo mkdir -p /usr/local/mysql
sudo tar -zxvf /usr/local/package/mysql-5.7.38-el7-x86_64.tar.gz -C /usr/local/mysql --strip-components=1
--strip-components=1
用于去掉解压后的顶级目录,直接把文件解压到 /usr/local/mysql
目录。
2.5 配置MySQL
创建数据目录
MySQL 需要一个专门的数据目录来存放数据库文件:
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql
初始化MySQL
使用以下命令初始化 MySQL 数据目录,生成初始系统表和临时密码:
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
初始化完成后,终端会输出一个临时密码,格式类似:
2025-03-01T12:34:56.789012Z 1 [Note] A temporary password is generated for root@localhost: AbcDef123!
请务必记住这个红色位置的临时密码,后续登录 MySQL 会用到。
2.6 配置MySQL服务
复制服务脚本
把 MySQL 的服务脚本复制到系统服务目录:
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
设置开机自启
使用以下命令将 MySQL 服务设置为开机自动启动:
sudo chkconfig --add mysql
sudo chkconfig mysql on
2.7 启动MySQL服务
sudo service mysql start
其他命令:
// 停止
sudo service mysql stop
// 重启
sudo service mysql restart
// 查询状态
sudo service mysql status
2.8 登录MySQL并修改密码
使用临时密码登录
/usr/local/mysql/bin/mysql -u root -p
输入之前记录的临时密码,进入 MySQL 命令行界面。
修改密码
登录后,执行以下 SQL 语句修改 root 用户的密码(新密码要符合 MySQL 的密码强度要求):
我这里为了方便,设置密码为:123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
将 123456
替换成你想设置的新密码。修改完成后,输入 EXIT;
退出 MySQL 命令行界面。
2.9 配置环境变量
为了更方便地使用 MySQL 命令,可将 MySQL 的二进制目录添加到系统环境变量中。
编辑 /etc/profile
文件:
sudo vi /etc/profile
在文件末尾添加以下内容:
export PATH=$PATH:/usr/local/mysql/bin
保存并退出文件,然后使配置生效:
source /etc/profile
2.10 修改MySQL端口
MySQL默认端口是:3306
但是这个端口因为比较常用,所以是比较危险的,尽量不使用3306端口。
端口可使用范围:1024~65535(前提是这个端口没有被占用)
这里使用的是:23306。
MySQL 的配置文件通常是 /etc/my.cnf
或者 /etc/mysql/my.cnf
,这里以 /etc/my.cnf
为例。使用以下命令编辑该文件。
在配置文件中找到 [mysqld]
部分,若不存在则添加该部分。
在 [mysqld]
部分下添加或修改 port
参数为 23306
。
sudo vi /etc/my.cnf
[mysqld]
port = 23306
在 vi 编辑器中,按 Esc 键,然后输入 :wq 并回车,保存修改并退出。
重启 MySQL 服务。
sudo service mysql restart
问题:
如果重启不了,那么大概率是SELinux搞的鬼。
执行如下代码即可成功重启MySQL:
setenforce 0
2.11 开通MySQL远程连接
登录 MySQL
/usr/local/mysql/bin/mysql -u root -p
输入之前设置的 root 用户密码,进入 MySQL 命令行界面。
创建允许远程连接的用户
链接密码为 “123456”(不包括双引号)。
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";
修改 bind-address 配置
默认情况下,MySQL 只允许本地连接。
若要允许远程连接,需要修改 bind-address
配置。
编辑 /etc/my.cnf
文件:
sudo vi /etc/my.cnf
在 [mysqld]
部分找到 bind-address
参数,将其修改为 0.0.0.0
,表示允许任何 IP 地址连接:
[mysqld]
bind-address = 0.0.0.0
保存并退出文件后,重启 MySQL 服务:
sudo service mysql restart
防火墙开放端口
firewalld 防火墙(centos-7)运行命令,并重启:
firewall-cmd --zone=public --add-port=23306/tcp --permanent
firewall-cmd --reload
2.12 远程连接MySQL
打开Navicat,左上角:连接 > MySQL:
注意:如果Navicat点击连接就闪退,那么先退出“豆包”等AI软件。