环境准备

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