程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 【MySQL案例】mysql本機登錄-S失效

【MySQL案例】mysql本機登錄-S失效

編輯:MySQL綜合教程

【MySQL案例】mysql本機登錄-S失效


1.1.1. mysql本機登錄mysql時,-S參數失效

【環境描述】

mysql5.5.14

【問題描述】

配置了多實例

 

實例1

實例2

datadir

/home/mysql_3306

/home/mysql_3307

basedir

/usr

/usr

socket

/home/mysql_3306/mysq.sock

/home/mysql_3307/mysq.sock

登錄實例2的時候,卻連接到了實例1:

mysql -S /home/mysql_3307/mysql.sock

> show variables like '%sock%';

+---------------+-----------------------------+

| Variable_name | Value |

+---------------+-----------------------------+

| socket | /home/mysql_3306/mysql.sock |

+---------------+-----------------------------+

【問題原因】

mysql命令中的-S參數是用來指定unix_socket,但是此時mysql很明顯沒有使用socket。

查看/etc/my.cnf配置文件,發現[client]域配置如下:

[client]

host = 127.0.0.1

嘗試修改host=localhost 和注釋掉host,再次嘗試登錄mysql:

mysql -S /home/mysql_3307/mysql.sock

> show variables like '%sock%';

+---------------+-----------------------------+

| Variable_name | Value |

+---------------+-----------------------------+

| socket | /home/mysql_3307/mysql.sock |

+---------------+-----------------------------+

此時,正常登錄上了指定的實例。

再次測試登錄mysql:

mysql -S /home/mysql_3306/mysql.sock -h 127.0.0.1-P 3307

> show variables like '%sock%';

+---------------+-----------------------------+

| Variable_name | Value |

+---------------+-----------------------------+

| socket | /home/mysql_3307/mysql.sock |

+---------------+-----------------------------+

mysql登錄的時候指定的socket是3306端口的,host是127.0.0.1,port是3307,登錄後,連接的是3307端口的實例,

mysql -S /home/mysql_3307/mysql.sock -h127.0.0.1

> show variables like '%sock%';

+---------------+-----------------------------+

| Variable_name | Value |

+---------------+-----------------------------+

| socket | /home/mysql_3306/mysql.sock |

+---------------+-----------------------------+

mysql登錄的時候指定的socket是3307端口的,host是127.0.0.1,port沒有指定,登錄後,連接的是3306端口的實例。

綜上,mysql客戶端連接mysql數據庫的時候,如果同時指定了socket和host的時候,mysql會采用TCP/IP協議登錄,此時socket會被忽略,默認情況下訪問3306端口。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved