下载软件包,并改名为mysql
cd /data
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz -C /data/
mv mysql-8.0.34-linux-glibc2.12-x86_64/ mysql
创建数据目录,并设置权限
mdkir /data/mysql/data
mkdir /data/mysql/data
mkdir /data/mysql/logs
touch /data/mysql/logs/mysqld.log
useradd -r mysql -s /sbin/nologin
chown -R mysql:mysql /data/mysql
chmod 750 /data/mysql
设置配置文件 vi /etc/my.cnf
[root@apollo ~]# cat /etc/my.cnf
[mysqld]
skip-name-resolve
explicit_defaults_for_timestamp
# 设置mysql的安装目录
basedir=/data/mysql
# 设置3306端口
port=3306
socket = /tmp/mysql.sock
# 设置mysql数据库的数据的存放目录
datadir=/data/mysql/data
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
max_allowed_packet=16M
bind-address = 0.0.0.0
pid-file=/data/mysql/mysqld.pid
log-error=/data/mysql/logs/mysqld.log
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
slow_query_log=0
long_query_time=10.0
# 允许最大连接数
max_connections=3000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100000
# MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
# MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
# Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
#执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout = 3600
#内部内存临时表的最大值。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 64M
max_heap_table_size = 64M
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
初始化数据库
/data/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql/ --datadir=/data/mysql/data
配置systemd服务管理
cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld
编辑mysqld脚本文件,找到basedir=和datadir=这两个参数,指定数据库目录和mysql安装目录。
vim /etc/init.d/mysqld
basedir=/data/mysql
datadir=/data/mysql/data
加入开机自启动
chkconfig --add mysqld
chkconfig mysqld on
systemctl start mysqld
systemctl status mysqld
查看mysql默认密码
cat /data/mysql/logs/mysqld.log |grep password|awk -F"localhost: " '{print $2}'