centos8中的MySQL卸載和安裝


centos8中的MySQL卸載和安裝

前言

前幾天在自己的服務器上安裝了一個NDB集群【而且還沒有成功】

放棄治療后用一台沒有mysql的服務器實現了單機版本的集群。

本來以為這事到這就結束了,結果意外發現自己服務器上的MySQL被玩壞了……

本着修一修還能用的思想怒砸一個下午去修復,結果只發現了自己菜,沒有發現mysql故障怎么解決……

所以就卸載重來吧……

卸載

mysql卸載主要分為三步:

  1. 卸載已安裝的mysql程序;
  2. 刪除相關的文件夾;
  3. 刪除my.cnf文件。
卸載已安裝的程序
# 查看已安裝的mysql程序
shell>  rpm -qa | grep -i mysql
mysql-errmsg-8.0.21-1.module_el8.2.0+493+63b41e36.x86_64
mysql-8.0.21-1.module_el8.2.0+493+63b41e36.x86_64
mysql-common-8.0.21-1.module_el8.2.0+493+63b41e36.x86_64
mysql-server-8.0.21-1.module_el8.2.0+493+63b41e36.x86_64

# 按照查詢結果一一刪除,可能會有順序要求,因為部分文件存在依賴關系
shell> rpm -ev mysql-server-8.0.21-1.module_el8.2.0+493+63b41e36.x86_64
shell> rpm -ev mysql-errmsg-8.0.21-1.module_el8.2.0+493+63b41e36.x86_64
shell> rpm -ev mysql-8.0.21-1.module_el8.2.0+493+63b41e36.x86_64
shell> rpm -ev mysql-common-8.0.21-1.module_el8.2.0+493+63b41e36.x86_64

# rpm -qa | grep -i mariadb(刪除centos默認系統自帶的)
shell>  rpm -qa | grep -i mariadb
shell> rpm -ev mariadb-connector-c-config-3.0.7-1.el8.noarch
刪除相關的文件夾
# 查看對應的MySQL目錄
find / -name mysql
# 結果:
/var/lib/docker/volumes/wp_db_data/_data/mysql
/var/lib/docker/volumes/94f2988e2ff63103c8c14f2bd69df6a4579e16bc2e5fd364b366878cd1e2fdc3/_data/mysql
... ...

# 刪除對應目錄文件[和docker有關的不刪,那是另外的東西]:
rm -rf /var/log/mysql
rm -rf /usr/share/selinux/packages/mysql
rm -rf /lanblue/conf/mysql
... ...
刪除配置文件
# 最后刪除配置文件
shell> rm -rf /etc/my.cnf

安裝

這應該是我第三次在服務器上安裝mysql,但是完全不記得之前怎么裝的了,只記得簡單【我明明覺得自己記過筆記的】

網上找了一百個教程都沒有看到特別喜歡的,嘗試yum安裝但是有點問題,最后還是在官網上下的包。

因為沒有my.cnf,決定去官網說明文檔里找一個。

等一等……

既然我都去官網了,為什么我不按照官網的教程來,明明學NDB集群的時候就是這樣做的呀,果然還是吃了有經驗的虧啊……

於是按照官網安裝。

還是踩坑了,有配置需求的時候要看完官網教程,不要邊看邊學QAQ

下載
# 在某個目錄下下載包
shell> wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
# 解壓
shell> tar Jxvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
# 移動和重命名
# 這兩步不是記得太清楚了,最后結果就是把安裝目錄改名為mysql8,並放在/usr/local目錄下。
# 大家可以放在自己喜歡的目錄下
shell> mv ./mysql-8.0.22-linux-glibc2.12-x86_64 /usr/local
shell> cd /usr/local
shell>mv ./mysql-8.0.22-linux-glibc2.12-x86_64 mysql8
授權和配置
# 創建用戶和用戶組,有就不用管
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql

# 轉到安裝目錄下
shell> /usr/local/mysql8
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files
# 可能是安全方面的想法
shell> bin/mysql_ssl_rsa_setup
# 可選的操作,我覺得可能是設置為開機啟動
shell> cp support-files/mysql.server /etc/init.d/mysql.server

# 不推薦!如果安裝在官方推薦的目錄下使用這句話沒有問題,如果是自定義的目錄不要用這句話
# shell> bin/mysqld --initialize --user=mysql
# 之后會出現問題

# 初始化
# 我使用的是這個語句,主要在於配置了basedir【安裝目錄】和datadir【存放數據的地方,里面要空】
# 初始化最后一行會出現臨時密碼,要復制粘貼待會用。
# 使用--initialize-insecure會默認沒有密碼,但是后續也要修改,所以我只示范本命令行中的方法
shell> bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data
... ...
2020-12-22T06:12:26.872936Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: &dj*3sCai3Fw

# 另一種方式 使用配置文件初始化
# 【在配置文件中設置目錄】配置文件可以在網上找一找格式,需要自定義很多內容的小伙伴可以使用這種方式
# bin/mysqld --defaults-file=/path/to/your/config/my.cnf --initialize --user=mysql

# 啟動服務
# 跳轉到bin目錄
shell> ./mysqld_safe  --user=mysql &
[1] 26248
... ...
2020-12-22T06:16:18.543780Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql8/data

# 已經有啟動的進程了,但是查看狀態會報錯。應該是我沒有設置服務名,不管他
shell> service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service
   Loaded: not-found (Reason: Unit mysqld.service not found.)
   Active: failed (Result: exit-code) since Tue 2020-12-22 09:46:34 CST; 4h 37min ago
 Main PID: 28825 (code=exited, status=1/FAILURE)

# 嘗試登陸一下
shell> mysql -u root -p
-bash: mysql: command not found

# 默認找的是usr/local/bin,所以要做個軟鏈接
ln -s /usr/local/mysql8/bin/mysql /usr/local/bin/mysql
# 之后就成功啦~記得使用之前看到的密碼
shell> mysql -uroot -p
Enter password: 

# 修改密碼
# 選擇一個新密碼來替換隨機密碼,否則無法執行任何操作
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Myp@a$w*rd';

# 創建新用戶並授權
mysql> CREATE USER 'blue'@'%' IDENTIFIED BY 'p@ssWor$';
mysql> GRANT ALL ON *.* TO 'blue'@'%';

# 遠程登陸如果提示 client does not support authentication protocol requested by server
mysql> ALTER USER 'blue'@'%' IDENTIFIED WITH mysql_native_password BY 'p@ssWor$';

# 遠程登陸如果提示 authentication plugin 'sha256_password' cannot be loaded
# 修改加密規則 
mysql> ALTER USER 'blue'@'%' IDENTIFIED BY 'p@ssWor$' PASSWORD EXPIRE NEVER;   
# 更新一下用戶的密碼 
mysql> ALTER USER 'blue'@'%' IDENTIFIED WITH mysql_native_password BY 'p@ssWor$';  
# 刷新權限 
mysql> FLUSH PRIVILEGES;  
# 這句也要執行
mysql> ALTER USER 'blue'@'%' IDENTIFIED BY 'p@ssWor$';

好啦,可以用啦~超開心。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM