编译安装 MySQL 数据库
前置准备
系统版本:CentOS 7.6
服务器资源:2C4G
MySQL 版本:5.7.40
下载 MySQL 安装包地址:MySQL官方下载地址 or MySQL 5.7.40安装包下载链接
安装部署
一、系统初始化
- 开放防火墙端口,关闭 SELINUX
#开放防火墙端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
#关闭 selinux
sed -i "/SELINUX/s/enforcing/disabled/" /etc/selinux/config
setenforce 0
- 安装调试软件
yum -y install vim telnet net-tools unzip wget
- 配置主机名
hostnamectl set-hostname mysql && bash
二、安装 MySQL
- 下载安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.40-el7-x86_64.tar.gz
- 安装部署
#解压安装包
mkdir -p /app/
tar -xvf mysql-5.7.40-el7-x86_64.tar.gz -C /app/
ln -s /app/mysql-5.7.40-el7-x86_64/ /app/mysql
cd /app/mysql/
# 创建MySQL用户
useradd -r -s /sbin/nologin mysql
# 创建数据目录
mkdir /data/mysql -p
#目录授权
chown mysql.mysql -R /data/mysql
chown mysql.mysql -R /app/mysql
# 配置环境变量
echo "export PATH=/app/mysql/bin:$PATH" >> /etc/profile
source /etc/profile
# 初始化数据库,MySQL 初始化无密码,直接不输入密码登录。
mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/mysql
- 配置 MySQL 配置文件
cat > /etc/my.cnf << EOF
[mysqld]
basedir = /app/mysql
datadir = /data/mysql
pid-file = /tmp/mysql.pid
socket = /tmp/mysql.sock
port = 3306
user = mysql
log_error = /data/mysql/mysql-error.log
slow-query-log-file = /data/mysql/mysql-slow.log
log_bin = /data/mysql/mysql-master-bin.log
relay-log = /data/mysql/mysql-relay-bin
server-id = 1
innodb_buffer_pool_size = 1024M
innodb_log_buffer_size = 16M
key_buffer_size = 128M
query_cache_size = 256M
tmp_table_size = 128M
binlog_format = mixed
skip-external-locking
skip-name-resolve
character-set-server = utf8
collation-server = utf8_bin
max_allowed_packet = 16M
thread_cache_size = 256
table_open_cache = 4096
back_log = 1024
max_connect_errors = 100000
interactive_timeout = 1800
wait_timeout = 1800
max_connections = 500
sort_buffer_size = 16M
join_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 16M
binlog_cache_size = 2M
thread_stack = 192K
max_heap_table_size = 128M
myisam_sort_buffer_size = 128M
bulk_insert_buffer_size = 256M
open_files_limit = 65535
query_cache_limit = 2M
slow-query-log
long_query_time = 2
expire_logs_days = 3
max_binlog_size = 1000M
slave_parallel_workers = 4
log-slave-updates
binlog_ignore_db = mysql
replicate_wild_ignore_table = mysql.%
sync_binlog = 1
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
innodb_buffer_pool_instances = 4
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_open_files = 4000
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_thread_concurrency = 8
innodb_io_capacity = 2000
innodb_io_capacity_max = 6000
innodb_lru_scan_depth = 2000
innodb_max_dirty_pages_pct = 85
innodb_flush_log_at_trx_commit = 2
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[isamchk]
key_buffer = 128M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 128M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
EOF
- 配置服务管理
cat > /etc/systemd/system/mysqld.service << EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
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
ExecStart=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
systemctl daemon-reload
启动 MySQL 服务
- 启动 MySQL 服务,配置开机自启
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
- 登陆 MySQL
#mysql编译无密码,直接回车登录
[root@mysql ~]# mysql -uroot -p
Enter password: