歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在ubuntu環境下mysql數據庫啟動異常排除

在ubuntu環境下mysql數據庫啟動異常排除

日期:2017/2/25 10:35:34   编辑:Linux教程

 今天在ubuntu 12.04安裝了mysql , 使用命令:

  sudo apt-get install mysql-server mysql-client

  安裝

  安裝以後啟動正常,但是發現mysqld 服務只監聽3306端口的127.0.0.1 ip地址,

  sudo netstat -ntlp

  tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 5459/mysqld

  於是上網查了一下,發現時由於my.cnf配置文件中

  bind-address = 127.0.0.1

  這說明它之間聽來自127.0.0.1的請求,於是,我停掉了mysql 服務,然後修改了該配置文件。

  bind-address = 0.0.0.0

  這代表mysql 會監聽來自任何IP地址的請求(當然,端口號必須是3306) .

  修改的時候我發現該文件為只讀文件,於是,我直接將文件權限改為777

  sudo chmod 777 my.cnf

  然後,我重啟mysql服務,發現,服務無法重啟,報錯,無日志

  無奈之下,我只好卸載mysql 然後重新安裝

  sudo apt-get remove mysql-server mysql-client

  我發現這種方式無法完全卸載mysql,通過查詢github,我得知,必須加purge參數,從而完整卸載包括配置文件在內的所有文件,同時,必須加上mysql-common

  sudo apt-get install remove --purge mysql-server mysql-client mysql-common

  重新安裝後,問題依舊:只要更改了配置文件my.cnf, mysql就無法重啟了。

  經過多方排查,我發現這是由於我更改了my.cnf權限,使得該文件能夠被任何用戶讀取和修改,這是mysql不允許的。於是,我在更改了my.cnf之後,

  重新把權限改回默認權限644,再次重啟mysql,成功

  這時候,我用sudo netstat -nltp 查看3306端口監聽情況,發現已經變成:

  sudo netstat -ntlptcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5459/mysqld

  這意味著mysqld服務已經開始監聽外部ip地址的請求了,但是這不意味著來自外部ip地址的請求有權限操作mysql數據庫,必須為其添加權限:

  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

  FLUSH PRIVILEGES;

  這時候,就可以從外部ip地址訪問數據庫了。

Copyright © Linux教程網 All Rights Reserved