环境准备
yum -y install numactl-devel libaio-devel
useradd mysql -M -s /sbin/nologin
install -d -o mysql -g mysql -m 755 /data/mysql_data
install -d -o mysql -g mysql -m 755 /data/mysql_data/data
install -d -o mysql -g mysql -m 755 /data/mysql_data/tmp
install -d -o mysql -g mysql -m 755 /backup/mysql_log
install -d -o mysql -g mysql -m 755 /backup/mysql_log
二进制安装
cd /usr/local/src/
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
tar -xf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.33-linux-glibc2.12-x86_64 /usr/local/mysql
echo 'PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
mysql -V
数据库配置
cat > /usr/local/mysql/my.cnf << 'EOF'
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
[mysql]
prompt = "(\u@\h:)[\d]> "
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
datadir = /data/mysql_data/data
skip-external-locking
skip-name-resolve
##INNODB
innodb_buffer_pool_size = 256M
innodb_file_per_table = 1
innodb_data_home_dir = /data/mysql_data/data
innodb_data_file_path = ibdata1:1G:autoextend
innodb_log_file_size = 512M
innodb_log_buffer_size = 32M
######slowquery
slow_query_log = 1
slow_query_log_file = /data/mysql_log/mysql-slow.log
log-queries-not-using-indexes = true
long_query_time = 1
##### Replication Master Server (default)
##### binary logging is required for replication
log-bin = /data/mysql_log/mysql-bin.bin
binlog_format = MIXED
max-binlog-size = 1G
expire_logs_days = 5
binlog_cache_size = 32M
log_bin_trust_function_creators = 1
[mysqldump]
quick
max_allowed_packet = 32M
[isamchk]
key_buffer = 128M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 128M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
EOF
数据初始化
# 初始化(会随机生成密码)
mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize --user=mysql
管理脚本
# https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html
cd /usr/lib/systemd/system
touch mysqld.service
chmod 644 mysqld.service
# 注意修改 ExecStart 配置文件路径
# 注意类型调整(Type=simple):https://blog.csdn.net/pang_2899/article/details/105994439
cat > 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
# Have mysqld write its state to the systemd notify socket
# Type=notify
Type=simple
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
EOF
# 开机自启动
systemctl enable mysqld.service
# 启动
systemctl start mysqld
# 查看状态
systemctl status mysqld
权限设置
mysql -hlocalhost -uroot -p
# 修改默认密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
# 新增127账号
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
GRANT PROXY ON ''@'' TO 'root'@'127.0.0.1' WITH GRANT OPTION;
自动登录
cat > /root/.my.cnf << EOF
[client]
user=root
password=password
default-character-set = utf8
host=127.0.0.1
[mysql]
prompt = "(\u@\h:)[\d]> "
default-character-set = utf8
EOF