一、卸载MySQL(没有安装过忽略)
rpm -qa | grep mysql
yum remove mysql-*
在/目录下查找包含mysql的文件名,并逐一删除即可
find / -name mysql
rm -rf 搜索出来的文件名(例如 rm -rf /usr/local/mysql)
二、卸载CentOS自带的Maridb数据库
1.搜索有关Mariadb的软件包
rpm -qa | grep mariadb
2.强制删除
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
3.删除yum中有关Maridb的相关软件包
yum -y remove mari*
三、下载MySQ
将下载好的MySQL上传到服务器,我存放的路径 /usr/download
四、开放端口
#开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanen
#重启防火墙
service firewalld restart
# 查看开放端口列表
firewall-cmd --permanent --list-port
五、安装MySQL
1.解压
cd /usr/download
tar -xvf mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz
mv mysql-8.4.0-linux-glibc2.28-x86_64 /usr/local/mysql
2.创建MySQL用户组和用户并赋予权限
#创建MySQL用户组和用户
groupadd mysql
useradd -r -g mysql mysql
#赋予权限
chown mysql:mysql -R /usr/local/mysql
3.配置my.cnf
vim /etc/my.cnf
不同的版本,配置内容有所不同
5.7
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
log-error=/usr/local/mysql/mysql.err
pid-file=/usr/local/mysql/mysql.pid
socket=/usr/local/mysql/mysql.sock
default_authentication_plugin=mysql_native_password
lower_case_table_names=1
group_concat_max_len=102400
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
socket=/usr/local/mysql/mysql.sock
8.0~8.3
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
log-error=/usr/local/mysql/mysql.err
pid-file=/usr/local/mysql/mysql.pid
socket=/usr/local/mysql/mysql.sock
default_authentication_plugin=caching_sha2_password
lower_case_table_names=1
group_concat_max_len=102400
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
socket=/usr/local/mysql/mysql.sock
8.4
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
log-error=/usr/local/mysql/mysql.err
pid-file=/usr/local/mysql/mysql.pid
socket=/usr/local/mysql/mysql.sock
default_authentication_plugin=caching_sha2_password
max_connections=200
max_connect_errors=10
character-set-server=utf8mb4
default-storage-engine=INNODB
lower_case_table_names=1
group_concat_max_len=102400
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
socket=/usr/local/mysql/mysql.sock
4.初始化数据库
yum install ncurses-compat-libs
#进入mysql的bin目录
cd /usr/local/mysql/bin/
#初始化
./mysqld --initialize
#查看密码
cat /usr/local/mysql/mysql.err
5.启动MySQL服务
cd /usr/local/mysql/bin
ln -s /usr/local/mysql/bin/mysql /usr/bin
sudo ./mysqld --defaults-file=/etc/my.cnf &
6.登录MySQL
mysql -uroot -p
输入刚才生成的密码
7.修改MySQL密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '要设置的密码';
FLUSH PRIVILEGES;
8.修改max_connect_errors最大值
查看默认连接数
show variables like '%max_connect_errors%';
修改连接数为500,基本上同一IP不可能超过500
set global max_connect_errors = 500;
flush privileges;
9.远程连接
#访问mysql库
use mysql;
#使root能再任何host访问
update user set host = '%' where user = 'root';
#刷新
FLUSH PRIVILEGES;
#退出
exit;
六、开机自启
-
编写启动脚本
内容如下vi /usr/local/mysql/bin/start.sh
授权#!/bin/bash echo "mysql start....." /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
chmod +x /usr/local/mysql/bin/start.sh chown mysql:mysql /usr/local/mysql/bin/start.sh
-
编写systemctl脚本
内容如下vi /lib/systemd/system/mysql.service
重新加载systemctl脚本#启动顺序与依赖关系 [Unit] #配置文件的描述信息 Description=mysql #在那个服务后面启动 一般是network.target syslog.target守护进程需要 After=network.target syslog.target #启动行为 [Service] #以守护进程的方式启动 Type=forking #哪一个分组的用户来启动 User=mysql Group=mysql #服务启动时要执行的命令:执行的命令的路径 [命令的参数] ExecStart=/usr/local/mysql/bin/start.sh #只有当服务异常退出时才重启 Restart=on-failure #私有的临时目录 PrivateTmp=true #表示如何安装配置文件。 [Install] #表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行 WantedBy=multi-user.target
开启开机自启systemctl daemon-reload
重启验证systemctl enable mysql
reboot #CentOS7 systemctl status mysql #CentOS8 systemctl --no-pager status --full mysql