安装前首先卸载已安装的mysql版本。
1、查找已安装的mysql软件:rpm -qa | grep mysql
2、逐一卸载:rpm -e PackageName
3、删除mysql数据库目录:rm -rf /var/lib/mysql/*
4、删除配置文件:rm -rf /etc/my.cnf
一、安装
1、下载
https://dev.mysql.com/downloads/mysql/
下载RPM Bundle
2、解压到本地文件夹
复制以下5个文件上传到centos9
3、 执行安装命令(以root角色安装):
rpm -ivh mysql-community-common-8.3.0-1.el9.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.3.0-1.el9.x86_64.rpm
rpm -ivh mysql-community-libs-8.3.0-1.el9.x86_64.rpm
rpm -ivh mysql-community-client-8.3.0-1.el9.x86_64.rpm
rpm -ivh mysql-community-server-8.3.0-1.el9.x86_64.rpm --nodeps --force
问题1:在安装mysql-community-server 报错:
解决的方法:在rpm 语句后面加上--nodeps --force
问题2:在安装mysql-community-libs 报错
error: Failed dependencies:
mariadb-libs is obsoleted by mysql-community-libs
解决办法:卸载之前的mysql-libs
yum remove -y mysql-libs
#再次安装
rpm -ivh mysql-community-libs..
#安装完毕,查看版本
mysql --version
4、修改配置文件,配置大小写不敏感(必须在启动服务前修改,若启动后再增加配置则无法成功,只有rm -rf /var/lib/mysql 删除所有数据重新设置)
nano /etc/my.cnf
lower_case_table_names=1
max_connections = 2000
max_connect_errors = 1000
5、启动服务
#赋予权限,一直无法启动显示启动中,赋予权限即可
chmod -R 777 /var/lib/mysql
#启动服务或查看服务信息
systemctl start mysqld
systemctl status mysqld

二、配置mySQL
1、命令初始化
mysqld --initialize --user=mysql --lower_case_table_names=1
2、执行完成后会在该文件中生成mysql的临时密码:
cat /var/log/mysqld.log | grep password
问题1:启动失败,显示地址已在使用,也就是3306端口被占用
查看占用3306的程序:sudo netstat -antup|grep 3306
解决方法:修改端口为3307
sudo nano /etc/my.cnf
在[mysqld]节点后面增加port=3307
ctrl+字母o保存,再ctrl+字母x退出。
并再次执行:chmod -R 777 /var/lib/mysql
按提示执行:journalctl -xe
发现提示执行以下两句命令:【修改端口号时要执行以下】
ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
semodule -X 300 -i my-mysqld.pp
根据提示又执行了:semodule -i my-mysqld.pp
最后执行启动mysqld服务命令!
总结:
配置文件/etc/my.cnf全部内容为:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.1/en/server-configuration-defaults.html
[mysqld]
port=3307#需要执行其他语句
user=root
lower_case_table_names=1#忽略大小写
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.1/en/server-system-variables.html#sysvar_default_a uthentication_plugin
# default-authentication-plugin=mysql_native_password
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
max_connections = 2000
max_connect_errors = 1000
需要执行赋予权限:chmod -R 777 /var/lib/mysql
//重新挂载服务
sudo systemctl daemon-reload
//启动服务
sudo systemctl start mysqld
//停止
sudo systemctl stop mysqld
//重启
systemctl restart mysqld
//查看服务状态
sudo systemctl status mysqld
//设置开机启动
sudo systemctl enable mysqld
//查看服务是否是自启动
systemctl is-enabled mysqld
三、登录mysql
mysql -u root -p
修改密码:记得语句后得加逗号;
ALTER USER USER() IDENTIFIED BY 'xxxxxx';
flush privileges;
查看用户列表:
设置允许远程连接:
use mysql;
update user set host='%' where user='root';
select host,user from user;
执行完毕需要重启mysql服务。
systemctl restart mysqld
设置防火墙,图示是3306端口
四、其他配置
(1)设置最大连接数量,避免超过最大连接数量
sudo nano /etc/my.cnf
添加 max_connections = 2000(数量可自定义) 保存后重启服务:systemctl restart mysqld
(2)忽略大小写
需要备份数据库,清空数据,一切重新开始
rm -rf /var/lib/mysql #清空数据
# 添加配置,大小写不敏感
lower_case_table_names=1
此时重启mysqld服务提示权限不够,按以上问题2的方法解决。

启动服务后,按以上方法,(1查找临时密码,(2登录mysql,(3修改密码,(4再设置允许远程登录等。
最后重启服务!
(3)设置最大错误次数
max_connect_errors = 1000
参考以上设置方法