MySQL 安装与配置
本文档提供了在 CentOS 7 上安装和配置 MySQL 的详细步骤,包括开启 binlog 和配置自动备份脚本。
1. 准备工作
下载 MySQL
从 MySQL 官方网站 下载 MySQL 安装包。
安装依赖
在终端中运行以下命令安装必要的依赖包:
yum install libaio perl net-tools numactl autoconf openssl-devel \
openssl perl-JSON.noarch perl-Test-Simple perl.x86_64 perl-devel.x86_64 -y
环境信息
- 测试环境:CentOS 7
- 安装位置:
/usr/local/mysql - 数据位置:
/home/mysql/data
2. 解压与链接
解压 MySQL 安装包并创建符号链接:
tar xf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql
3. 创建用户、目录和配置环境变量
groupadd mysql
useradd -r -g mysql mysql
echo 'mysql:5v$DI#3jeESw1eziN' | sudo chpasswd
mkdir -p /home/mysql/data
chown mysql:mysql -R /home/mysql/data
编辑 /etc/profile 文件,添加以下内容:
export MYSQL_HOME=/usr/local/mysql
export PATH=.:${MYSQL_HOME}/bin:$PATH
应用更改:
source /etc/profile
4. 配置 my.cnf
在 /etc/my.cnf 中添加以下配置:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/home/mysql/data
socket=/tmp/mysql.sock
pid-file=/home/mysql/data/mysql.pid
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1
max_connect_errors=8000
max_connections=2000
# 日志功能
log-error=/home/mysql/data/mysql.err
slow_query_log=1
slow_query_log_file=/home/mysql/data/mysql_slow.log
general_log=1
general_log_file=/home/mysql/data/mysql.log
long_query_time=2
log_queries_not_using_indexes=1
# Binlog 日志
server_id=1
log_bin=/home/mysql/data/bin-log
expire_logs_days=7
binlog_format=ROW
5. 安装 MySQL
初始化 MySQL:
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql
6. 配置服务启动项及端口
设置 MySQL 开机自启:
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
启动 MySQL 服务:
/etc/init.d/mysqld start
开放防火墙端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
7. 数据库初始化配置密码
MySQL 5 初始化
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aa#0539';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Aa#0539' WITH GRANT OPTION;
FLUSH PRIVILEGES;
MySQL 8 初始化
USE mysql;
UPDATE user SET Host='%' WHERE User='root' AND Host='localhost';
ALTER USER 'root'@'%' IDENTIFIED BY 'tecsun123';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Tecsun#1939';
FLUSH PRIVILEGES;
创建新用户(可选)
CREATE USER 'app'@'%' IDENTIFIED BY 'App@123456' PASSWORD EXPIRE NEVER;
GRANT INSERT, UPDATE, DELETE, SELECT, CREATE TEMPORARY TABLES, LOCK TABLES, SHOW DATABASES ON *.* TO 'app'@'%';
FLUSH PRIVILEGES;
8. 优化建议
-
建议将
root用户限制为localhost,并创建一个admin用户:CREATE USER 'admin'@'%' IDENTIFIED BY 'Tecsun#1221'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%'; FLUSH PRIVILEGES; -
确保
my.cnf中的bind-address配置为本机同网段。
RPM 安装方式
卸载 MariaDB
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
安装依赖
yum install libaio perl net-tools numactl autoconf openssl-devel openssl -y
yum install perl.x86_64 perl-devel.x86_64 -y
yum install perl-JSON.noarch -y
yum install perl-Test-Simple -y
解压并安装 MySQL
tar -xvf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm
启动 MySQL
service mysqld start
查看初始密码:
grep 'temporary password' /var/log/mysqld.log
Docker 部署
docker-compose.yaml 示例
version: '3'
services:
mysql8:
image: mysql:8.0.36
container_name: mysql8
environment:
- MYSQL_ROOT_PASSWORD=q84t$PU26D%nw##u
- TZ=Asia/Shanghai
volumes:
- /raid1/docker/mysql/log:/var/log/mysql
- /raid1/docker/mysql/data:/var/lib/mysql
- /raid1/docker/mysql/conf.d:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
ports:
- 3306:3306
restart: always
管理命令
- 停止服务:
docker-compose stop mysql8 - 重启服务:
docker-compose restart mysql8 - 启动服务:
docker-compose start mysql8
卸载与重建容器
docker-compose down
docker-compose up
通过以上步骤,您可以成功安装、配置和优化 MySQL 数据库。