由于重啟服務(wù)器導(dǎo)致MySQL數(shù)據(jù)庫啟動不了,折騰了一天弄好了禽作,記錄下經(jīng)驗:
環(huán)境 :centos7? MySQL5.6
本文包括:
? ? 一、啟動MySQL是卡死不動的排查方式。
? ? 二、完全卸載MySQL的方法
? ? 三盹兢、阿里云上安裝配置MySQL
? ? 四邻梆、MySQL重新安裝后數(shù)據(jù)恢復(fù)
一守伸、啟動MySQL是卡死不動的排查方式。
啟動mysql卡死不動
[root@~]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
排查1浦妄、之前好使尼摹,突然不好使了灯萍。
[root@~]#cd /var/lib/mysql
[root@~]#ls -l
-rw-rw---- 1 mysql mysql 56 Jul 30 19:03 auto.cnf
-rw-rw---- 1 root? root? 79691776 Jul 31 00:36 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Jul 31 00:36 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Jul 31 00:34 ib_logfile1
drwx------ 2 mysql mysql? ? 4096 Jul 30 19:03 mysql
srwxrwxrwx 1 mysql mysql? ? ? ? 0 Jul 31 00:36 mysql.sock
drwx------ 2 mysql mysql? ? 4096 Jul 30 19:03 performance_schema
1石蔗、正常情況下用戶權(quán)限都是 ‘mysql’ ,異常退出后可能就變成‘root’了
授予mysql權(quán)限 chown -R mysql.mysql /var/run/mysqld/
執(zhí)行后再ls -l 看下跋涣,沒有更改成功就用 chown? mysql.mysql <文件名> 單獨配置一遍阅懦,文件夾里邊的文件不要忘記看和二。
2、注意/var/lib/mysql目錄中的權(quán)限都是文件660(-rw-rw---- )耳胎,文件夾是700(drwx------)惯吕,如果不對要用chmod 660 <文件名>? ? ? chmod 700 <文件名>? 對文件或文件夾進行權(quán)限管理
發(fā)現(xiàn)上述兩個問題并改正后,再重啟數(shù)據(jù)庫試試怕午,還是不行就繼續(xù)往下排查废登。
排查2:根據(jù)log文件排查
? ? [root@~]#cat /var/log/mysqld.log (默認(rèn)mysql日志的安裝路徑)
? ? 如果你只想看到錯誤信息,可以使用cat /var/log/mysqld.log | grep ‘ERROR’命令查看
? ? 我在log中發(fā)現(xiàn)一個問題不認(rèn)識 default-character-set=utf8
? ? 原本想在MySQL 配置文件/etc/my.cnf中加入default-character-set=utf8? 將數(shù)據(jù)庫字符集設(shè)置為 utf8郁惜,結(jié)果不能啟動了堡距,注釋掉后一切正常。
查看/etc/my.cnf 文件中如果有字符集設(shè)置的語句不妨先注釋掉再service mysqld start試試
? 排查3:setenforce 0? #關(guān)閉selinux
selinux可能開啟導(dǎo)致權(quán)限不夠兆蕉,這玩意干嘛的我也不會羽戒,先關(guān)掉再說。
二虎韵、完全卸載MySQL的方法
上邊的方法解決不了了半醉,可以考慮重新安裝mysql.
1、備份
將/var/lib/mysql文件夾中的數(shù)據(jù)除了mysql文件夾全部拷貝出去劝术,留著恢復(fù)缩多。
2呆奕、完全卸載
[root@~]#yum remove mysql mysql-server
[root@~]#find / -name mysql 將找到的相關(guān)東西delete掉;
[root@~]#mv /var/lib/mysql /var/lib/mysql_old_backup#或者直接刪除
[root@~]#rpm -qa|grep mysql(查詢出來的全部yum remove掉)
三衬吆、阿里云上安裝配置MySQL(系統(tǒng):阿里云centos7)
建議按照自己之前的方式安裝梁钾,保持兩次的版本一樣,避免數(shù)據(jù)恢復(fù)失敗的可能逊抡。
[root@~]#rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm? ? ####新增yum源
[root@~]# yum repolist enabled | grep "mysql.*-community.*" ? #####查看可用的mysql版本
[root@~]# yum -y install mysql-community-server?
[root@~]# systemctl enable mysqld #######啟動mysql服務(wù)進程
[root@~]# systemctl start mysqld #######配置mysql(設(shè)置密碼等)
[root@~]# mysql_secure_installation #######配置初始信息
配置步驟
Enter current password for root (enter for none):<–初次運行直接回車
OK, successfully used password, moving on...
Set root password? [Y/n] Y<– 是否設(shè)置root用戶密碼姆泻,輸入y并回車或直接回車
New password: <– 設(shè)置root用戶的密碼
Re-enter new password: <– 再輸入一次你設(shè)置的密碼
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] <– 是否刪除匿名用戶,生產(chǎn)環(huán)境建議刪除,所以直接回車
... Success!
Disallow root login remotely? [Y/n] <–是否禁止root遠程登錄,根據(jù)自己的需求選擇Y/n并回車,建議禁止
... Success!
Remove test database and access to it? [Y/n] <– 是否刪除test數(shù)據(jù)庫,直接回車
- Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
... Failed!? Not critical, keep moving...
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n]<– 是否重新加載權(quán)限表冒嫡,直接回車
... Success!
如果需要外網(wǎng)可以訪問需要再做如下設(shè)置:授權(quán)用戶可以從遠程登陸
[root@~]# mysql -u root -p? ###進入mysql
Enter password:? ? ? ? ###輸入剛剛設(shè)置的密碼
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 5.6.39 MySQL Community Server (GPL)
拇勃。。孝凌。方咆。。蟀架。
mysql> use mysql; ? ? ####使用mysql數(shù)據(jù)庫
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select host,user,password from user;? ? ? #####查看user表
+-----------+------+-------------------------------------------+
| host? ? ? | user | password? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+-----------+------+-------------------------------------------+
| localhost | root | *80A84E4759FEC49969DA411756A51BB3FEC9B72C |
| 127.0.0.1 | root | *80A84E4759FEC49969DA411756A51BB3FEC9B72C |
| ::1? ? ? | root | *80A84E4759FEC49969DA411756A51BB3FEC9B72C |
+-----------+------+-------------------------------------------+
3 rows in set (0.00 sec)
可以看到在user表中已創(chuàng)建的root用戶瓣赂。host字段表示登錄的主機,其值可以用IP片拍,也可用主機名煌集,
? (1)有時想用本地IP登錄,那么可以將以上的Host值改為自己的Ip即可捌省。
實現(xiàn)遠程連接(授權(quán)法)
? 將host字段的值改為%就表示在任何客戶端機器上能以root用戶登錄到mysql服務(wù)器苫纤,建議在開發(fā)時設(shè)為%。?
? update user set host = '%' where user = 'root';?
? 將權(quán)限改為ALL PRIVILEGES
//修改訪問權(quán)限纲缓,讓其他計算機也能訪問
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword ' WITH GRANT OPTION;? ? ? ? ? ? ? -->yourpassword 此處輸入自己設(shè)置的密碼
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host? ? ? | user | password? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+-----------+------+-------------------------------------------+
| %? ? ? ? | root | *D4CECBA84F0A507325CD8AA82FCDE04EA8BE56B0 |
| 127.0.0.1 | root | *80A84E4759FEC49969DA411756A51BB3FEC9B72C |
| ::1? ? ? | root | *80A84E4759FEC49969DA411756A51BB3FEC9B72C |
+-----------+------+-------------------------------------------+
3 rows in set (0.00 sec)
*在控制臺中 安全組配置? 添加 3306 端口卷拘,不然外網(wǎng)不能訪問端口
四、MySQL重新安裝后數(shù)據(jù)恢復(fù)
步驟前邊都寫了就不重復(fù)了色徘。
1,恭金、把卸載前備份的數(shù)據(jù)替換掉/var/lib/mysql 文件夾中的數(shù)據(jù)。
2褂策、按照 步驟‘排查1’中的方式將文件的權(quán)限重新設(shè)置對横腿。然后重啟服務(wù)器,就可以用phpmyadmin查看了斤寂。