一、准备
ip地址: 192.168.99.128
端口号: 3306
mysql下载地址:https://repo.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
二、初始化
# 禁止SELINUX 并重启系统,如果已是禁止,则忽略
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' etc/selinux/config
reboot
# 系统时间设置
yum install chrony -y
# 编辑chrony配置文件,并注释掉所有的NTP服务器行并添加以下行
vi etc/chrony.conf
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
# 启动 服务,并会自动设置北京时间
systemctl start chronyd
systemctl enable chronyd
三、安装
# 下载软件
yum install wget -y
mkdir -p opt/data/soft/
cd opt/data/soft/
wget https://repo.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
# 解压
tar -xf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.27-linux-glibc2.12-x86_64 opt/data/mysql
# 创建 数据目录 和 日志目录
mkdir -p opt/data/mysql/logs opt/data/mysql/data
# 创建用户
useradd mysql
# 安装依赖
yum install -y libaio numactl
四、配置mysql
# 创建文件 etc/my.cnf
vi etc/my.cnf
[mysqld]
# 监听端口
port=3306
# 安装目录
basedir=/usr/local/mysql
# 数据目录
datadir=/usr/local/mysql/data
# 最大连接数
max_connections = 100
# 默认数据库引擎
default-storage-engine = InnoDB
# 字符集
character-set-server=utf8
# 错误日志
log-error = usr/local/mysql/log/error.log
# 开启慢日志
slow_query_log = 1
# 慢查询日志时间阈值 默认是10S
long-query-time = 30
# 慢查询日志存放路径
slow_query_log_file = usr/local/mysql/log/show.log
# 记录那些由于查找了多余1000次而引发的慢查询
min_examined_row_limit = 1000
# 记录由Slave所产生的慢查询
log-slow-slave-statements
# 如果运行的SQL语句没有使用索引,则将这条SQL语句记录到慢查询日志文件中
log-queries-not-using-indexes
六、配置服务环境
# 复制启动文件到/etc/init.d/mysql
cp /opt/data/mysql/support-files/mysql.server /etc/init.d/mysql
# 修改启动文件内容
## 补充 basedir=/opt/data/mysql
## 补充 datadir=/opt/data/mysql/data
sed -i 's/^basedir=/basedir=\/opt\/data\/mysql/g' /etc/init.d/mysql
sed -i 's/^datadir=/datadir=\/opt\/data\/mysql\/data/g' /etc/init.d/mysql
# 配置环境变量
echo "export PATH=/opt/data/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
# 授权
chown mysql.mysql -R /opt/data/mysql
# 初始化数据
mysqld --initialize --user=mysql --basedir=/opt/data/mysql --datadir=/opt/data/mysql/data
# 重载 systemd 配置
systemctl daemon-reload
# 检查是否有语法错误
systemctl status mysql.service
# 启动服务,并加入自启动
systemctl start mysql.service
systemctl enable mysql.service
# 开启防火墙
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
五、修改mysql默认密码
# 重置 root 密码
## 查看 root 初始密码
grep root@localhost /opt/data/mysql/logs/error.log |awk -F':' '{print $NF}'|awk '{print $NF}'
此案例的初始密码为:0%;wR<7987XgX6
## 修改 root 密码
### 生成新 root 密码
openssl rand -base64 10
YUGYUGYUBidsCtIkmw==
## 登录 mysql
mysql -uroot -p
### 如下是修改root初始密码,并允许其他ip通过root访问mysql
ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY 'YUGYUGYUBidsCtIkmw==';
update mysql.user set host='%' where user ='root';
flush privileges;
六、其它
如自定义密码出现问题,提示不满足安全要求,原因密码简短:

解决方法是降低密码等级:
# 降低密码等级
set global validate_password_policy=LOW;
# 设置密码最低长度要求,最低为4,设置小于4,结果也为4
set global validate_password_length=1;

现在可以用新的密码登录了,至此完成了mysql的安装。




