天天看点

CentOS7 卸载mysql5或者MySQL8,并重新安装MySQL8

#头条创作挑战赛# 先看结果,最后再说遇到的情况。

卸载 MySQL5或者MySQL8

#1. 停止MySQL服务
systemctl stop mysqld
 
#2. 查询MySQL的安装文件
rpm -qa | grep -i mysql
 
#3. 卸载上述查询出来的所有的MySQL安装包
# mysql-x.x.x.x  是第二步查出来的内容,从下往上一个一个进行处理。
rpm -e --nodeps mysql-x.x.x.x
 
#4. 删除MySQL的数据存放目录
rm -rf /var/lib/mysql/
 
#5. 删除MySQL的配置文件备份
rm -rf /etc/my.cnf.rpmsave           

安装 MySQL8

cd /home/
mkdir mysql8
cd mysql8
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar

yum -y install glibc
yum -y install glibc-static libstdc++-static
yum -y install libaio

yum -y remove mysql-libs

chattr -i /etc/passwd;chattr -i /etc/shadow;chattr -i /etc/group;chattr -i /etc/sudoers

groupadd mysql
useradd mysql -g mysql -M -s /sbin/nologin

rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm


cp -r /var/lib/mysql /home/data/
chown mysql:mysql -R /home/data/mysql /home/logs/mysql/

cat>/etc/my.cnf<<EOF
[mysqld]
datadir=/home/data/mysql/data
socket=/home/data/mysql/mysql.sock
log-error=/home/data/mysql/mysqld.log
pid-file=//home/data/mysql/mysqld.pid

explicit_defaults_for_timestamp=true

character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLE
#plugin-load=validate_password.so 
#validate-password=OFF

log-bin = /home/logs/mysql/mysql-bin.log
expire-logs-days = 14
server-id = 1

join_buffer_size = 128M
tmp_table_size = 128M
sort_buffer_size = 128M
read_buffer_size = 256M
read_rnd_buffer_size = 128M
#innodb_log_file_size = 2G
innodb_log_buffer_size = 8M
innodb_buffer_pool_size = 500M
max_connections=1000

wait_timeout=31536000
interactive_timeout=31536000

[mysql]
socket=/home/data/mysql/mysql.sock

[client]
socket=/home/data/mysql/mysql.sock

[mysqldump]
socket=/home/data/mysql/mysql.sock

[mysqladmin]
socket=/home/data/mysql/mysql.sock

EOF

cd /home/data/mysql/
# 这里需要注意,要创建一个mysql的log文件,并且给mysql用户权限。
vi mysqld.log
chown -Rf mysql.mysql mysqld.log
chmod 755 mysqld.log

mysqld --initialize --user=mysql

systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld

cat mysqld.log | grep password
mysql -u root -p

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "Aa123456";
flush privileges;
           

以上脚本代码,复制粘贴执行就行,在mysql8.0.31上测试有点问题,还没有调整。在mysql8.0.30版本测试通过。

继续阅读