CentOS搭建:MySQL

12/31/2023 Linux

目录


参考:


# CentOS搭建:MySQL5

CentOS中软件安装的常用方式:

  • 在线源安装(yum)
  • 离线程序安装(rpm)
  • 源码二进制包安装(二进制glibc,无需编译)
  • 源码包编译安装 (要编译)

# 环境依赖

软件/系统 版本 架构 包名 方式 备注
Linux CentOS7.X x86_64 mysql-5.7.44-el7-x86_64.tar.gz (opens new window) 源码二进制包安装 官网下载 (opens new window)

# 安装前检查

# 卸载系统自带mariadb

MariaDB Server 是最流行的开源关系型数据库之一。它由 MySQL 的原始开发者制作,并保证保持开源。在 CentOS 7 中默认安装有 MariaDB

# 查找mariadb
rpm -qa|grep mariadb
1
2

例如:mariadb-libs-5.5.68-1.el7.x86_64

# 卸载查找到的mariadb
sudo rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
1
2
  • 普通卸载模式:rpm -e xxx(mysql_libs),如果提示有依赖其他文件,则可以用强力卸载。
  • 强力卸载模式:rpm -e --nodeps xxx(mysql_libs)

# 检查是否安装过MySQL

# 查找 mysql
rpm -qa | grep mysql
whereis mysql
sudo find / -name mysql
1
2
3
4
# 卸载查找到的 mysql
sudo rpm -e --nodeps <mysql>
# 删除系统中mysql的文件
sudo rm -rf <mysql_file>
1
2
3
4

# 检查有无my.cnf配置文件

cat /etc/my.cnf
1

# 检查有无MySQL用户组

cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
1
2

# 安装MySQL5

解压安装包

# 解压缩
sudo tar -zxvf mysql-5.7.44-el7-x86_64.tar.gz -C /soft/mysql
1
2

环境变量配置

ll -a /etc/profile.d |grep mysql
# 编辑环境变量
sudo vi /etc/profile.d/mysql.sh
1
2
3
export PATH=$PATH:/soft/mysql/mysql-5.7.44-el7-x86_64/bin
1
# 环境变量生效
source /etc/profile.d/mysql.sh
1
2

生效之后,打出mysql,按tab补全键两下,就可以看到所有的mysql/bin下的都能出来: 在这里插入图片描述

# 创建MySQL用户组和用户

sudo groupadd mysql
sudo useradd -g mysql mysql 
1
2
# 修改为非标准登录用户
sudo usermod -s /sbin/nologin mysql
# 查看是否修改成功
getent passwd mysql | cut -d: -f7
1
2
3
4

# 创建MySQL配置自定义文件

# 数据目录
sudo mkdir -p /data/mysql/mysql-5.7.44-el7-x86_64/data
# 进程文件
sudo touch /data/mysql/mysql-5.7.44-el7-x86_64/mysql.pid
# 套接字文件
sudo touch /data/mysql/mysql-5.7.44-el7-x86_64/mysql.sock
# 日志文件
sudo mkdir -p /data/mysql/mysql-5.7.44-el7-x86_64/log
sudo touch /data/mysql/mysql-5.7.44-el7-x86_64/log/mysql.log
1
2
3
4
5
6
7
8
9

# 更改MySQL目录下件权限

#更改文件的用户组和用户
sudo chown -R mysql:mysql /soft/mysql
sudo chown -R mysql:mysql /data/mysql
#给mysql目录下的所有文件加执行权限 todo
chmod -R 775 /soft/mysql-5.7.44-el7-x86_64
1
2
3
4
5

更改完之后ll可以查看一下

# 编辑MySQL配置文件

ll -a /etc/ |grep my.cnf
# 编辑
sudo vi /etc/my.cnf
1
2
3
[client]
# 端口
port=3306
# 套接字文件
socket=/data/mysql/mysql-5.7.44-el7-x86_64/mysql.sock

[mysqld]
# 端口
port=3306
# 安装目录
basedir=/soft/mysql/mysql-5.7.44-el7-x86_64
# 插件目录,该目录不需要手动创建,在lib下面
plugin_dir=/soft/mysql/mysql-5.7.44-el7-x86_64/lib/plugin
# 进程文件
pid-file=/data/mysql/mysql-5.7.44-el7-x86_64/mysql.pid
# 套接字文件
socket=/data/mysql/mysql-5.7.44-el7-x86_64/mysql.sock
# 日志文件
log-error=/data/mysql/mysql-5.7.44-el7-x86_64/log/mysql.log
# 数据目录
datadir=/data/mysql/mysql-5.7.44-el7-x86_64/data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 修改 my.cnf 权限 todo
chmod -R 755 /etc/my.cnf
1
2

# 配置文件my.cnf的配置

[client] [mysqld]
作用范围 适用于MySQL的所有客户端程序,如mysql、mysqladmin、mysqldump等,影响它们连接到MySQL服务器的行为。 专门用于配置MySQL服务器(mysqld)的行为,包括服务器的启动、运行和性能优化等。
常见配置项 - 默认连接的MySQL服务器地址(host)
- 默认端口(port)
- 默认用户(user)
- 密码(password,但出于安全考虑,通常不建议在配置文件中明文存储)
- 字符集(character-set)等
- 数据目录位置(datadir)
- 监听端口(port)
- 运行MySQL服务的用户(user)
- 字符集和校对规则(character-set-server, collation-server)
- 内存和缓存设置(如innodb_buffer_pool_size)
- 日志文件位置(如log_error)
- 最大连接数(max_connections)等
影响范围 影响所有使用此配置文件的MySQL客户端程序。 仅影响MySQL服务器的运行和性能。
修改生效方式 修改后,客户端程序在下次启动时会自动应用新的配置。但是,如果客户端程序已经在运行,则需要重启程序才能使更改生效。 修改后,通常需要重启MySQL服务才能使更改生效。
安全性考虑 在配置文件中存储密码等敏感信息时,要特别注意安全性,避免泄露。 配置文件中可能包含服务器的敏感信息,如数据目录位置、日志文件位置等,需要妥善保护配置文件的安全。

# 初始化MySQL,生成临时密码

cd /soft/mysql/mysql-5.7.44-el7-x86_64/bin
#切换到mysql执行程序目录下,执行命令,生成临时数据库密码
sudo ./mysqld --initialize --user=mysql
1
2
3

image-20240730161711037

cat /data/mysql/mysql-5.7.44-el7-x86_64/log/mysql.log | grep password
1

# 启动MySQL

cd /soft/mysql/mysql-5.7.44-el7-x86_64/support-files
# 启动
sudo ./mysql.server start
# 停止
sudo ./mysql.server stop
1
2
3
4
5
# 查看进程
ps -ef|grep -v grep |grep mysql
ps -ef|grep -v grep |grep mysqld
1
2
3

添加到系统进程中

ll -a /etc/init.d |grep mysql
sudo cp /soft/mysql/mysql-5.7.44-el7-x86_64/support-files/mysql.server /etc/init.d/mysql
ll -a /etc/init.d/mysql*
1
2
3

设置mysql自启动

sudo systemctl enable mysql
1

服务化管理

# 启动
sudo systemctl start mysql
# 状态
sudo systemctl status mysql
# 停止
sudo systemctl stop mysql
# 重启
sudo systemctl restart mysql
1
2
3
4
5
6
7
8
# 状态
sudo service mysql status
# 停止
sudo service mysql stop
# 启动
sudo service mysql start
# 重启
sudo service mysql restart
1
2
3
4
5
6
7
8
# 查看
chkconfig --list

# 远程访问设置

登录

# 登录,初次密码是临时密码
mysql -u root -p
1
2

修改root用户密码

set password for root@localhost = password('Root@1234!');
1

开启 mysql 的远程访问权限

use mysql;
#允许远程登录
# 此命令仅改变了root用户可以从哪里连接,而不改变其权限。
update user set user.Host='%' where user.User='root';
#重载授权表:
flush privileges;
1
2
3
4
5
6

退出

# 退出
exit;
1
2

防火墙开放端口命令

# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
1
2
3
4

防火墙关闭命令

# 状态
sudo systemctl status firewalld
# 停止
sudo systemctl stop firewalld
# 禁用开机自启动
sudo systemctl disable firewalld
1
2
3
4
5
6

# CentOS搭建:MySQL8

# 环境依赖

软件/系统 版本 架构 包名 方式 备注
Linux CentOS7.X x86_64 mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz (opens new window) 源码二进制包安装 官网下载 (opens new window)

image-20241014100700797

注意:下载哪个版本,首先需要确定一下系统的glibc版本,使用如下命令:

rpm -qa | grep glibc
1

b12c462a8d2a1fcbcaa80ff175ccb4c3

# 安装前检查

# 卸载系统自带mariadb

MariaDB Server 是最流行的开源关系型数据库之一,由 MySQL 的原始开发者制作,并保证保持开源,在 CentOS 7 中默认安装有 MariaDB。

# 查找mariadb
rpm -qa|grep mariadb
1
2

例如:mariadb-libs-5.5.68-1.el7.x86_64

# 卸载查找到的mariadb
sudo rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
1
2
  • 普通卸载模式:rpm -e xxx(mysql_libs),如果提示有依赖其他文件,则可以用强力卸载。
  • 强力卸载模式:rpm -e --nodeps xxx(mysql_libs)

# 检查是否安装过MySQL

# 查找 mysql
rpm -qa | grep mysql
whereis mysql
sudo find / -name mysql
1
2
3
4
# 卸载查找到的 mysql
rpm -e --nodeps <mysql>
# 删除系统中mysql的文件
sudo rm -rf <mysql_file>
1
2
3
4

# 检查有无my.cnf配置文件

cat /etc/my.cnf
1

# 检查有无MySQL用户组

cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
1
2

# 安装MySQL8

解压安装包

# 解压缩
sudo tar -xvf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz -C /soft/mysql
1
2

安装依赖

sudo yum install libaio
1

环境变量配置

ll -a /etc/profile.d |grep mysql
# 编辑环境变量
sudo vi /etc/profile.d/mysql.sh
1
2
3
export PATH=$PATH:/soft/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/bin
1
# 环境变量生效
source /etc/profile.d/mysql.sh
1
2

生效之后,打出mysql,按tab补全键两下,就可以看到所有的mysql/bin下的都能出来: 在这里插入图片描述

# 创建MySQL用户组和用户

# 创建mysql用户组
sudo groupadd mysql
# 创建mysql用户,非标准登录用户
sudo useradd -g mysql mysql -s /sbin/nologin
1
2
3
4
# 查看是否创建成功
getent passwd mysql
getent passwd mysql | cut -d: -f7
1
2
3

# 创建MySQL配置自定义文件

# 数据目录
sudo mkdir -p /data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/data
# 进程文件
sudo touch /data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/mysql.pid
# 套接字文件
sudo touch /data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/mysql.sock
# 日志文件
sudo mkdir -p /data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/log
sudo touch /data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/log/mysql.log
1
2
3
4
5
6
7
8
9

# 更改MySQL目录下件权限

# 更改文件的用户组和用户
sudo chown -R mysql:mysql /soft/mysql
ll /soft/mysql/*
sudo chown -R mysql:mysql /data/mysql
ll /data/mysql/*
1
2
3
4
5

更改完之后ll可以查看一下

# 编辑MySQL配置文件

ll -a /etc/ |grep my.cnf
# 编辑
sudo vi /etc/my.cnf
1
2
3
[client]
# 端口
port=3306
# 套接字文件,保持和[mysqld]中的socket一致
socket=/data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/mysql.sock

[mysqld]
# 端口
port=3306
# 安装目录
basedir=/soft/mysql/mysql-8.0.39-linux-glibc2.17-x86_64
# 插件目录,该目录不需要手动创建,在lib下面
plugin_dir=/soft/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/lib/plugin
# 进程文件
pid-file=/data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/mysql.pid
# 套接字文件
socket=/data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/mysql.sock
# 日志文件
log-error=/data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/log/mysql.log
# 数据目录
datadir=/data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 初始化MySQL,生成临时密码

cd /soft/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/bin
#切换到mysql执行程序目录下,执行命令,生成临时数据库密码
sudo ./mysqld --initialize --user=mysql
1
2
3

image-20240730161711037

cat /data/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/log/mysql.log | grep password
1

# 启动MySQL

cd /soft/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/support-files/
# 启动
sudo ./mysql.server start
# 停止
sudo ./mysql.server stop
1
2
3
4
5
# 查看进程
ps -ef|grep -v grep |grep mysql
ps -ef|grep -v grep |grep mysqld
1
2
3

添加到系统进程中

sudo cp /soft/mysql/mysql-8.0.39-linux-glibc2.17-x86_64/support-files/mysql.server /etc/init.d/mysql
1

设置mysql自启动

sudo systemctl enable mysql
1

服务化管理

# 启动
sudo systemctl start mysql
# 状态
sudo systemctl status mysql
# 停止
sudo systemctl stop mysql
# 重启
sudo systemctl restart mysql
1
2
3
4
5
6
7
8
# 状态
sudo service mysql status
# 停止
sudo service mysql stop
# 启动
sudo service mysql start
# 重启
sudo service mysql restart
1
2
3
4
5
6
7
8

# 远程访问设置

# 登录,密码是临时密码
mysql -u root -p
1
2

修改root用户密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@1234!';
1
  • 在 MySQL 5.7.6 及以后的版本中,设置或更改用户密码的推荐方法是通过 ALTER USER 语句或者通过 CREATE USER 语句(如果用户尚不存在)。

开启 mysql 的远程访问权限

use mysql;
#允许远程登录
# 此命令仅改变了root用户可以从哪里连接,而不改变其权限。
update user set user.Host='%' where user.User='root';
#重载授权表:
flush privileges;
1
2
3
4
5
6

防火墙开放端口命令

# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
1
2
3
4

防火墙关闭命令

# 状态
sudo systemctl status firewalld
# 停止
sudo systemctl stop firewalld
# 禁用开机自启动
sudo systemctl disable firewalld
1
2
3
4
5
6
上次更新时间: 4/1/2025, 2:13:10 AM