1. 卸载默认的 MariaDB 和旧版本的 MySQL
使用发行版对应的包管理器进行卸载
示例:
yum remove -y mariadb mysql
zypper remove -y mariadb mysql
apt remove -y mariadb mysql
2. 移除旧版本 MySQL 的配置文件
rm -rf /etc/my.cnf /etc/mysql
3. 安装依赖
使用包管理器或安装包安装均可
MySQL 5.7 需要安装 libaio
和 numactl
MySQL 8.0 需要安装 libaio
和 ncurses-compat
示例:
yum install -y libaio numactl-libs ncurses-compat-libs
zypper install -y libaio libnuma
apt-get install -y libaio1 libnuma
4. 创建相关目录
/opt/mysql
)mkdir -pv /opt/mysql
/data/mysql
)mkdir -pv /data/mysql/{data,logs,files}
5. 创建 MySQL 用户组和用户
groupadd -g 27 -o -r mysql
useradd -M -N -g mysql -o -r -d /data/mysql/data -s /bin/false -c "MySQL Server" -u 27 mysql
其中 /data/mysql/data
为 MySQL 的数据目录
6. 配置 MySQL 数据目录权限
chown -R mysql.mysql /data/mysql
chmod -R 750 /data/mysql
7. 创建配置文件 my.cnf
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql/data
pid-file=/data/mysql/data/mysqld.pid
socket=/tmp/mysql.sock
port=3306
log-error=/data/mysql/logs/mysql.err
user=mysql
secure_file_priv=/data/mysql/files
local_infile=OFF
其中:
datadir
: 为 MySQL 的数据目录,此处为 /data/mysql/data
pid-file
: 为 MySQL Pid 文件,此处为 /data/mysql/data/mysqld.pid
log-error
: 为 MySQL 的日志文件,此处为 /data/mysql/logs/mysql.err
secure_file_priv
: 为 MySQL 的安全文件目录,此处为 /data/mysql/files
8. 下载 MySQL 二进制包
通过 MySQL 官方下载页面( https://dev.mysql.com/downloads/mysql ),选择对应的版本下载即可
示例(此处将二进制包下载至 /opt/mysql
目录):
MySQL 8.0 :
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -O /opt/mysql/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-i686.tar.xz -O /opt/mysql/mysql-8.0.33-linux-glibc2.12-i686.tar.xz
MySQL 5.7 :
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz -O /opt/mysql/mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42-linux-glibc2.12-i686.tar.gz -O /opt/mysql/mysql-5.7.42-linux-glibc2.12-i686.tar.gz
9. 解压 MySQL 二进制包至指定目录
示例(此处将二进制包解压至 /opt/mysql
目录):
MySQL 8.0 :
tar xvf /opt/mysql/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /opt/mysql --strip-components 1
tar xvf /opt/mysql/mysql-8.0.33-linux-glibc2.12-i686.tar.xz -C /opt/mysql --strip-components 1
MySQL 5.7 :
tar zxvf /opt/mysql/mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz -C /opt/mysql --strip-components 1
tar zxvf /opt/mysql/mysql-5.7.42-linux-glibc2.12-i686.tar.gz -C /opt/mysql --strip-components 1
10. 初始化配置目录
/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize
其中 /opt/mysql/bin/mysqld
为解压后 mysqld
二进制文件的路径
11. 配置 mysqld.service
文件
vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/data/mysql/data/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize
--pid-file=/data/mysql/data/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
其中:
PIDFile
和 --pid-file
: 为 MySQL Pid 文件的路径,这里是 /data/mysql/data/mysqld.pid
/opt/mysql/bin/mysqld
为解压后 mysqld
二进制文件的路径chmod 644 /usr/lib/systemd/system/mysqld.service
12. 配置 mysql.conf
文件
vim /usr/lib/tmpfiles.d/mysql.conf
d /data/mysql/data 0750 mysql mysql -
其中 /data/mysql/data
为 MySQL 数据文件的目录
chmod 644 /usr/lib/tmpfiles.d/mysql.conf
13. 启动 MySQL 服务
systemctl enable mysqld
systemctl start mysqld
14. 查看 MySQL 服务状态
systemctl status mysqld
15. 查看 MySQL root 用户默认密码
cat /data/mysql/logs/mysql.err | grep "password"
其中 /data/mysql/logs/mysql.err
为 MySQL 日志文件的路径
16. 修改 MySQL root 用户密码
/opt/mysql/bin/mysql -u root -p
其中 /opt/mysql/bin/mysql
为 MySQL Pid 文件的路径,这里是 /data/mysql/data/mysqld.pid
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
其中 password
为新密码
1. 卸载默认的 MariaDB
rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-xxx
2. 卸载 MySQL 残余
rpm -qa | grep mysql
rpm -e --nodeps mysql-xxx
3. 下载 MySQL 仓库的 rpm 文件
从官网( https://repo.mysql.com )下载对应版本的 rpm 文件,如:
wget https://repo.mysql.com/mysql80-community-release-el7-6.noarch.rpm
wget https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
4. 安装 MySQL 仓库
安装上一步中下载的 MySQL 仓库,如
yum install -y mysql80-community-release-el7-6.noarch.rpm
yum install -y mysql57-community-release-el7-11.noarch.rpm
5. 启用 MySQL 仓库
查看 MySQL 仓库列表
yum repolist all | grep mysql
yum-config-manager --enable mysql80-community
yum-config-manager --enable mysql57-community
6. 搜索可安装的 MySQL 版本
yum list mysql-community-server --showduplicates|grep "^mysql"|sort -r
7. 安装 MySQL
yum install -y mysql-community-server
yum install -y mysql-community-server-版本号
示例:
yum install -y mysql-community-server-8.0.34-1.el7
注意:安装时若提示 GPG 密钥不存在/不合适
则需要先执行以下命令,然后再重新安装 MySQL
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
8. 启动 MySQL 服务
systemctl enable mysqld
systemctl start mysqld
9. 查看 MySQL 服务状态
systemctl status mysqld
10. 查看 MySQL 默认密码
cat /var/log/mysqld.log | grep "password"
11. 登录 MySQL
mysql -u root -p
12. 修改 MySQL root 用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
其中 password
为新密码
1. 卸载默认的 MariaDB
rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-xxx
2. 卸载 MySQL 残余
rpm -qa | grep mysql
rpm -e --nodeps mysql-xxx
3. 在官网找到完整的 rpm 包
官网下载地址:https://dev.mysql.com/downloads/mysql/
4. 下载完整的 RPM 包
方式一: 直接下载到服务器
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar
方式二: 先下载到本机,再上传到服务器
略
5. 解压 TAR 包
tar xvf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar
6. 依次安装 RPM 包
示例:
rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm
# 开发库
rpm -ivh mysql-community-devel-5.7.38-1.el7.x86_64.rpm
# 嵌入式
rpm -ivh mysql-community-embedded-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-devel-5.7.38-1.el7.x86_64.rpm
# 测试组件
rpm -ivh mysql-community-test-5.7.38-1.el7.x86_64.rpm
7. 检查安装情况
rpm -qa | grep mysql
8. 启动 MySQL 服务
systemctl enable mysqld
systemctl start mysqld
9. 查看 MySQL 服务状态
systemctl status mysqld
10. 查看 MySQL 默认密码
cat /var/log/mysqld.log | grep "password"
11. 登录 MySQL
mysql -u root -p
12. 修改 MySQL root 用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
其中 password
为新密码
1. 安装 Docker
略,请参考官方文档( https://docs.docker.com/engine/install ) 或本站文章 ( Docker Engine(1):Docker Engine 的安装 )
2. 获取 MySQL 镜像
官网:https://hub.docker.com/_/mysql
项目地址: https://github.com/docker-library/mysql
文档: https://github.com/docker-library/docs/tree/master/mysql
方式一: 直接拉取镜像
docker pull mysql:8.0.33
方式二: 导入镜像
docker load -i 镜像TAR文件名称
3. 运行 MySQL 容器
docker run /
-d -p 3306:3306 /
--restart always /
--privileged=true /
--name mysql /
-e MYSQL_USER="username" /
-e MYSQL_PASSWORD="username_pasword" /
-e MYSQL_ROOT_PASSWORD="root_password" /
-v=/data/apps/mysql_docker/5.7.38/config/my.cnf:/etc/my.cnf /
-v=/data/apps/mysql_docker/5.7.38/data:/var/lib/mysql mysql:8.0.33
参数说明:
--restart always
:开机启动--privileged=true
:提升容器内权限-e MYSQL_USER="username"
:添加用户username-e MYSQL_PASSWORD="username_pasword"
:设置username的密码为username_pasword-e MYSQL_ROOT_PASSWORD="root_password"
:设置root的密码为root_password-v=/data/apps/mysql_docker/5.7.38/config/my.cnf:/etc/my.cnf
:映射配置文件-v=/data/apps/mysql_docker/5.7.38/data:/var/lib/mysql
:映射数据目录4. 查看容器运行情况
docker ps
5. 登录 MySQL
docker exec -it mysql mysql -u root -p
1. 安装 Docker 和 Docker Compose
略,请参考官方文档或本站文章:
2. 创建相关目录
mkdir -pv /opt/mysql/{data,initdb,conf}
3. 编辑 docker-compose.yml 文件
vim /opt/mysql/docker-compose.yml
version: '3'
services:
mysql:
image: mysql:8.0.33
container_name: mysql
restart: always
dns_search: .
network_mode: host
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/mysql/data:/var/lib/mysql
- /opt/mysql/initdb:/docker-entrypoint-initdb.d
- /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf:ro
- /opt/mysql/conf/my_custom.cnf:/etc/mysql/conf.d/my_custom.cnf:ro
environment:
- MYSQL_ROOT_USER=root
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_USER=username
- MYSQL_PASSWORD=username_pasword
- BITNAMI_DEBUG=true
4. 编辑 my.cnf
配置文件
vim /opt/mysql/conf/my.cnf
文件内容略,请参考官方文档按需配置
5. 编辑 my_custom.cnf
配置文件
vim /opt/mysql/conf/my_custom.cnf
文件内容略,请参考官方文档按需配置
6. 启动 Docker 容器
cd /opt/mysql
docker-compose up -d
7. 查看 MySQL 容器状态和日志
cd /opt/mysql
docker-compose ps
docker-compose logs -f