2014
Feb
16
最近將伺服器搬家,於是將原機器所裝的軟體改裝到新機器,並且 OS 從 CentOS 5.8 升到 CentOS 6.5,結果其中一個軟體 Mysql 一直有問題。
Mysql Error
- 140216 13:56:04 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
- 140216 13:56:05 mysqld_safe Starting mysqld daemon with databases from /www/data/mysqldata/
- /usr/mysql/libexec/mysqld: Table 'mysql.plugin' doesn't exist
- 140216 13:56:05 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
- 140216 13:56:05 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
- 140216 13:56:05 [ERROR] Column count of mysql.db is wrong. Expected 22, found 20. Created with MySQL 50024, now running 50170. Please use mysql_upgrade to fix this error.
首先我使用 mysql_upgrade 更新資料庫看看,結果如下:
mysql_upgrade
- Looking for 'mysql' as: mysql
- Looking for 'mysqlcheck' as: mysqlcheck
- Running 'mysqlcheck with default connection arguments
- mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect
- FATAL ERROR: Upgrade failed
在這裡有看到一個 error 2002 ,去 Mysql 官網查詢後,發現是 Permission Deny ,一開始想說可能是我的資料庫 owner 並不是 「mysql」這個帳號,但是我啟動 mysql 時,有指定 --user=mysql, 接著我使用指令
sudo chown -R mysql:mysql /mysqldata
將資料庫檔案的 owner , group 全部改掉,都改成 Mysql。
但是改完之後,問題仍然存在,後來追查下發現 /etc/my.cnf 這個 Mysql config 的設定沒有更新到,於是我更新這個檔案,加入如下的設定後, Mysql 就能正常的啟動囉
my.cnf
- [mysqld]
- datadir=/mysqldata
- socket=/tmp/mysql.sock
- [client]
- socket=/tmp/mysql.sock
問題 2 : mariadb.pid
Mysql 不知為何,突然說無法建立這個檔案 /var/run/mariadb/mariadb.pid
log file: /var/log/mariadb/mariadb.log
- 160226 16:10:27 mysqld_safe Starting mysqld daemon with databases from /var/MysqlData/
- 160226 16:10:27 [ERROR] /usr/local/share/mysql/libexec/mysqld: Can't create/write to file '/var/run/mariadb/mariadb.pid' (Errcode: 13)
- 160226 16:10:27 [ERROR] Can't start server: can't create PID file: Permission denied
- 160226 16:10:27 mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid ended
解決方式為建立 /var/log/mariadb/, /var/run/mariadb/ 資料夾 ,並將這個資料夾的權限改成 777 或是 owner 改成 mysql 。
目前回應 Comments(2 comments)
殺手 2014/11/11
刪除了/etc/my.cnf以及/etc/mysql/my.cnf文件,重啓MySql服務,成功了,不過還是感謝博主的網誌~
ReplyAdmin
"Can not open the mysql.plugin table"
這個問題我曾經有碰多好多次,幾乎都是在重新安裝 Mysql ,搬移舊資料庫的時候發生,問題有蠻多種可能的,但是我已經忘記以前是怎麼解決的,等我以後又碰到類似的問題,再回來補足詳細資訊。
殺手 2014/11/10
我的 /etc/my.cnf配置是正確的,可是還是啓動失敗,看了一下我的mysql數據庫目錄,是存在plugin這個表的。