service mysqld stop
爲了安全期間,咱們採用複製命令cp,先找到mysql的原目錄 php
cd /var/lib ls
運行這個命令以後就會看到mysql的目錄了,而後執行cp命令 html
cp -a mysql /home/mysql_data/ #這樣就把數據庫複製到/home/mysql_data下面去了
注意:(-a這個參數必定要帶着,不然複製過去的權限就不對了。)
若是數據庫比較大的話,時間會比較長,可能會超時,能夠將複製的時候做爲後臺複製,命令以下mysql
cp -a mysql /home/mysql_data/ &
修改以前先備份cp /etc/my.cnf /etc/my.cnfbak vi /etc/my.cnf 打開以後修改datadir的目錄爲/home/mysql_data/mysql 把socket改爲/home/mysql_data/mysql/mysql.sock #爲了安全起見,你能夠把原來的註釋掉,而後從新加入一行,改爲如今的目錄。
修改以前先備份 cp /etc/init.d/mysqld /etc/init.d/mysqldbak vi /etc/init.d/mysqld
注意:準確的位置是/etc/rc.d/init.d/mysqld,因爲這裏這裏有一個/etc/init.d到/etc/rc.d/init.d的映射, 因此用上面的命令便可,也簡單。 把其中datadir=/var/lib/mysql一行中,等號右邊的路徑改爲你如今的實際存放路徑:/home/mysql_data/mysql linux
修改以前先備份 cp /usr/bin/mysqld_safe /usr/bin/mysqld_safebak vi /usr/bin/mysqld_safe
這裏也是修改datadir的目錄爲/home/mysql_data/mysql sql
ln -s /home/mysql_data/mysql/mysql.sock /var/lib/mysql/mysql.sock
至此全部的修改都完成了,下面啓動mysql
service mysqld start
或者重啓linux
reboot
若是能正常啓動,恭喜你修改爲功!shell
Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/l/JJonline.pid).
就抓狂了,服務器上的幾個網站還跑着了,mysql啓動不了這不歇菜了。找了找相關這種問題的資料,這裏作下總結。數據庫
這個問題不太說講,主要是mysql自帶的啓動文件(/etc/init.d/mysqld)中會自動檢測mysql的數據存儲目錄,若mysql新裝,還沒有初始化系統表,那麼配置文件中的datadir項寫不寫無所謂,出現這種狀況主要是在更改了mysql的數據存儲目錄,今天我出現的這個問題就在於此。centos
個人mysql安裝後的配置文件中關於datadir項目的配置以下,而該配置文件存儲於/etc/my.cnf,今兒不知動了什麼東西,查來查去都沒找着緣由,後來打開該配置文件才發現,其中的datadir項目被篡改爲/var/mysql/data了.....安全
[mysqld] datadir=/data/mysql socket=/tmp/mysql.sock user=mysql
這種狀況我不多遇到,若存在mysql進程但有不提供mysql服務(表現爲其餘客戶端鏈接不上mysql服務器,例如php鏈接mysql時提示「鏈接失敗」),這個時候就要看看有沒有存在的mysql殭屍進程了,命令以下:服務器
ps -ef|grep mysql
若存在,該命令執行後會列出存在的殭屍進程,kill -9 `pid`掉便可。
這種狀況發生於mysql第一次安裝或升級,配置文件中的datatdir目錄的權限要設定好,通常來講運行mysql的用戶以及組就是mysql.mysql,那麼解決權限不足問題的方法以下:
chown -R mysql.mysql /data/mysql ##該命令僅爲示例,其中/data/mysql就是mysql配置文件中datadir的目錄 ##若爲空,則默認爲mysql安裝目錄下的data文件夾下
這種狀況發生於mysql被覆蓋安裝或升級後,固然mysql無端宕機後也會有這種狀況,可能會影響mysql啓動的數據文件,通常存在於mysql的數據存儲目錄(這個目錄依據my.cnf配置文件中的datadir而異),也就是存在於mysql數據存儲目錄下的mysql-bin.index文件,刪除之便可。
selinux不甚瞭解,直接關掉。
##方法1:永久關閉seliux ##修改 vi /etc/selinux/config #文件中設置SELINUX=disabled ,而後重啓服務器 ##方法2:暫時關閉seliux setenforce 0 ##如需每次開機都鈴聲關閉seliux,則能夠在/etc/rc.d/rc.local文件中添加該命令
這是今天在羣裏的一個朋友出現的,特彙總於此;當mysql開啓了二進制日誌而且mysql在運行狀態下用rm命令刪除過mysql的binary日誌文件的話,下次重啓mysql你就悲劇了。
什麼是binary日誌?說白了就是mysql的數據目錄下的mysql-bin.00000一、mysql-bin.000002的文件,下圖所示。
解決方法就是修改配置文件臨時關閉binary-log,而後刪除mysql數據目錄下的全部相似mysql-bin.00000一、mysql-bin.000002的文件後再次重啓,mysql便可啓動成功。
#mysql配置關閉二進制日誌 找到以下語句 註釋掉便可 #log-bin=mysql-bin #binlog_format=mixed
此步驟操做完畢以後,若還須要啓用二進制日誌,那麼就要先停掉mysql服務,而後修改msyql的配置文件,再次重啓便可。
另外再附上正確刪除mysql二進制日誌文件的方法(絕對不是rm -rf命令直接刪這些文件):
#第一步 經過shell或cmd登陸進mysql 這步沒什麼好說的 msyql -u root -p *** #第二步 在mysql下直接執行清理binary日誌命令 mysql> rese
問題代碼代碼
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.19' (111)
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.19' (111)
這個 緣由就是Mysql數據庫的默認配置文件my.cnf(linux下)中的bind-address默認爲127.0.0.1,因此就算你建立了能夠 remote訪問的用戶,你也不能使用mysql -h命令進行訪問,若訪問就會出現上出問題,由於此時Mysql只接受localhost,因此須要把bind-address屏蔽掉。 my.cnf通常在/etc/mysql下面,若是不在使用locate my.cnf查找,修改前的my.cnf配置文件爲: 修改前的my.cnf配置文件代碼 # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 咱們須要作的就是屏蔽這個bind-address代碼,屏蔽後代碼爲: 屏蔽後my.cnf配置文件代碼 # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 如今你就能夠用mysql -h命令進行你想作的操做了,如登陸系統: 登錄數據庫代碼
若是沒法解決,那多是防火強的問題:
解決辦法:關閉防火牆,linux下命令
service iptables stop
若是任然沒法解決,檢查是否將帳戶設置爲可從任何主機上訪問mysql數據庫
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 若是你想容許用戶zz從ip爲192.168.1.3的主機鏈接到mysql服務器,並使用123456做爲密碼 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY '123456' WITH GRANT OPTION;
重啓生效:
service mysql restart