MySQL安装
安装依赖
yum -y install libaio
准备软件
mkdir -p /opt/softs
cd /opt/softs
wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
tar -xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
ln -s /opt/softs/mysql-8.0.26-linux-glibc2.12-x86_64 /usr/local/mysql
准备环境
useradd mysql
mkdir -pv /usr/local/mysql/{data,log}
编写配置文件
cat > /etc/my.cnf << EOF
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
lower_case_table_names = 1
user = mysql
server_id = 1
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /tmp/mysql.pid
tmpdir = /tmp
default-time-zone = '+08:00'
default_authentication_plugin = mysql_native_password
enforce_gtid_consistency = ON
gtid_mode = ON
binlog_checksum = none
skip-name-resolve = ON
open_files_limit = 65535
table_open_cache = 2000
#################innodb########################
default-storage-engine = InnoDB
innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:512M;ibdata2:512M:autoextend
innodb_buffer_pool_size = 12000M
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 600
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 8M
innodb_log_file_size = 200M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 85
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_thread_concurrency = 32
innodb_file_per_table = 1
innodb_undo_directory = /usr/local/mysql/data
innodb_log_group_home_dir = /usr/local/mysql/data
###################session###########################
join_buffer_size = 8M
key_buffer_size = 256M
bulk_insert_buffer_size = 8M
max_heap_table_size = 96M
tmp_table_size = 96M
read_buffer_size = 8M
sort_buffer_size = 2M
max_allowed_packet = 64M
read_rnd_buffer_size = 32M
############log set###################
log-error = /usr/local/mysql/log/mysql-err.log
log-bin = /usr/local/mysql/log/mysql-bin
log_bin_index = /usr/local/mysql/log/binlog.index
max_binlog_size = 500M
slow_query_log_file = /usr/local/mysql/log/mysql-slow.log
slow_query_log = 1
long_query_time = 10
log_queries_not_using_indexes = ON
log_throttle_queries_not_using_indexes = 10
log_slow_admin_statements = ON
log_output = FILE,TABLE
binlog_format = mixed
EOF
chown mysql:mysql /etc/my.cnf
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/*
echo "export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:\$PATH" >> ~/.bash_profile
source ~/.bash_profile
初始化
# 初始化
mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql
# 守护进程启动
mysqld_safe --defaults-file=/etc/my.cnf &
# 首次socket登录,登录后失效
mysql -S /tmp/mysql.sock
# 修改用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
exit;
再次登录
mysql -p123456
select version();
exit;
编写systemd脚本
cat > /usr/lib/systemd/system/mysql.service << EOF
[Unit]
Description=MySQL Server
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=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
EOF
启动
ps -ef | grep mysql | grep -Ev "grep" | awk '{print $2}' | xargs kill -9
systemctl start mysql
systemctl status mysql
创建远程登录用户
mysql -uroot -p123456
CREATE USER 'me'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'me'@'%';
exit;
配置文件参考