2013-03-15 98 views
9

「無法通過socket連接到本地MySQL服務器」當我調用該文件mysql_secure_installation我收到錯誤,如mysql_secure_installation

[[email protected] bin]$ ./mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL 
     SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! 


In order to log into MySQL to secure it, we'll need the current 
password for the root user. If you've just installed MySQL, and 
you haven't set the root password yet, the password will be blank, 
so you should just press enter here. 

Enter current password for root (enter for none): 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 
Enter current password for root (enter for none): 

但在my.cnf文件中指定的文件的襪子是/ home/mysqk123 /tmp/mysql.sock和我正在使用rehhat linux 5.3和mysql 5.1.47

我知道mysql_secure_installation腳本執行的任務可以手動執行,但是在這裏我必須運行腳本[不允許執行任務手動]

任何暗示s到解決問題是我

回答

14

非常有用的,因爲這個工具是指在標準安裝使用,因爲它似乎不接受任何參數,我很少看到選項:

  • 暫時配置MySQL在過程的時候使用默認套接字位置(或者,從默認位置到自定義位置的符號鏈接可能正常工作)。
  • 修改腳本mysql_secure_installation,以便它使用您的自定義位置。如果我理解正確,那麼該腳本會在make_config子例程的第46行周圍創建一個臨時配置文件./.my.cnf.$$$$是pid)。

修改如下: (聲明:未測試:)

make_config() { 
    echo "# mysql_secure_installation config file" >$config 
    echo "[mysql]" >>$config 
    echo "user=root" >>$config 
    echo "password='$rootpass'" >>$config 
    # add the line below 
    echo "socket=/home/mysqk123/tmp/mysql.sock" >>$config 
} 

同樣,這腳本是指要在標準中使用的,外的盒子安裝。告訴你的老闆(或你的客戶),如果你能夠配置MySQL使用非標準的套接字位置,你也可以通過手工運行簡單的命令,例如刪除賬戶和設置密碼。

+0

由於其工作 – vidyadhar 2013-03-16 21:37:42

+0

你是天才:) – 2013-09-24 01:49:34

+0

在MySQL 5.7.2中,'mysql_secure_installation.sh'將由二進制替換了接受命令行上的選項,特別是['--socket = path'](http://dev.mysql.com/doc/refman/5.7/en/mysql-secure-installation.html)。我還沒有測試過,但我會在更多地瞭解它時更新答案。 – RandomSeed 2014-11-14 11:27:03

4

你也可以做一個符號連接到插座文件,然後將其刪除:

ln -s /home/mysqk123/tmp/mysql.sock /var/lib/mysql/mysql.sock 
mysql_secure_installation # Do your stuff 
rm -rf /var/lib/mysql/mysql.sock 
1

我有同樣的錯誤發生,事實證明我已經停止MySQL服務和被遺忘的重新啓動它。所以,你可能想用這樣的命令來檢查MySQL服務的狀態:

mysqladmin -u root -p status

如果你得到一個錯誤,這意味着MySQL是沒有運行,你可以啓動MySQL服務。或者,如果你願意,你可以不顧一切地試圖不使用這些命令之一首先檢查其狀態(如果它已經運行,這將無法正常工作)來啓動服務:

/etc/init.d/mysql start 
service mysql start 

如果您的系統與mysqld更換mysqld正在使用該版本的MySQL。

2

確保您啓動mysql或MariaDB的,例如:

sudo systemctl start mariadb.service 
sudo systemctl enable mariadb.service 
相關問題