Linux下連接Mysql服務器的方式


一:mysql連接簡介

1、linux下mysql的連接方式有三種:

本地mysql命令連接
客戶端命令連接
腳本語言封裝方法連接

 

 

 

 

2、linux下mysql的連接方法有兩種:

TCP/IP協議連接
mysql.sock連接

 

 

 

二:mysql配置文件my.cnf的三個區塊講解

 

[client]區塊是mysql客戶端連接mysql服務器時讀取本地的my.cnf參數信息;

[mysql]區塊是mysql客戶端和mysql服務器部署在同一台機器上,並且利用mysql命令連接mysql服務器時讀取本地的my.cnf參數信息;

[mysqld]區塊是mysql服務器啟動時讀取本地的my.cnf參數信息。

三、mysql客戶端和mysql服務器部署在同一台機器上面

1、需要證明的結論:

①mysql客戶端和mysql服務器部署在同一台機器上面時,用mysql命令連接本地mysql服務器指定localhost這個地址,不需要指定mysql服務器端口,讀取[mysql]區塊的配置信息,並且通過mysql.sock方法連接mysql服務器;

②mysql客戶端和mysql服務器部署在同一台機器上面時,用mysql -h127.0.0.1連接mysql服務器讀取[client]區塊的配置信息,通過TCP/IP協議方法連接mysql服務器,並且默認指定3306端口;

③mysql客戶端和mysql服務器部署在同一台機器上面時,用python腳本登入mysql服務器相當於客戶端方式登入,不讀取my.cnf配置文件,只是python用自己的模塊封裝客戶端參數信息。

2、開始證明以上結論:

①mysql客戶端和mysql服務器部署在同一台機器上面時,用mysql命令連接本地mysql服務器指定localhost這個地址,不需要指定mysql服務器端口,讀取[mysql]區塊的配置信息,並且通過mysql.sock方法連接mysql服務器;

第一步:

執行如下mysql命令連接mysql服務器

帶上密碼連接成功:

得出結論:

mysql客戶端和mysql服務器部署在同一台機器時,執行mysql命令登入,默認指定localhost這個主機地址去連接;

第二步:

修改mysql服務器端口號並且重載mysql服務

[mysqld]
port=3307

連接正常:

得出結論:

mysql客戶端和mysql服務器部署在同一台機器上面時,執行mysql命令登入,不需要指定mysql服務器開放的端口;

第三步:

my.cnf的初始配置參數:

[mysql]
socket=/tmp/mysql.sock

可以成功登入mysql服務器

修改后的my.cnf配置參數:

[mysql]
socket=/tmp/mysql.sock_1

 出現如下報錯:

得出結論:

mysql客戶端和mysql服務器部署在同一台機器上面時,用mysql命令連接本地mysql服務器指定localhost這個地址,不需要指定mysql服務器開放的端口,讀取[mysql]區塊的配置信息,並且通過mysql.sock方法連接mysql服務器;

到此為止關於結論①證明完畢!

②mysql客戶端和mysql服務器部署在同一台機器上面時,用mysql -h127.0.0.1連接mysql服務器讀取[client]區塊的配置信息,通過TCP/IP協議方法連接mysql服務器,並且默認指定3306端口;

第一步:

my.cnf的初始配置參數:

[client]
port=3306
[mysqld]
port=3306

 可以成功登入mysql服務器

 

修改my.cnf配置參數:

[client]
port=3307
[mysqld]
port=3306

連接mysql服務器報錯:

指定端口連接mysql服務器:

得出結論:

mysql客戶端和mysql服務器部署在同一台機器上面時,用mysql -h 127.0.0.1連接mysql服務器讀取的的[client]這個區塊的配置信息,走的是TCP/IP協議方法連接的,並且如果不指定端口則默認3306端口;

到此為止關於結論②證明完畢!

③mysql客戶端和mysql服務器部署在同一台機器上面時,用python腳本登入mysql服務器相當於客戶端方式登入,不讀取my.cnf配置文件,只是python用自己的模塊封裝客戶端參數信息。

 第一步:

python腳本

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MySQLdb


def main():
    #conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='123', port=3306)
    conn = MySQLdb.connect(host='localhost', user='root', passwd='123', port=3306)
    cur = conn.cursor()
    cur.execute("show databases")
    print cur.fetchall()
    conn.commit()
    cur.close()
    conn.close()

if __name__ == '__main__':
    main()

執行結果如下:

MySQLdb源碼中有如下解釋:

得出結論:

mysql客戶端和mysql服務器部署在同一台機器上面時,用python腳本登入mysql服務器相當於客戶端方式登入,不讀取my.cnf配置文件,只是python自己模塊封裝的客戶端參數信息。

到此為止關於結論③證明完畢!

四、mysql客戶端和mysql服務器部署在不同機器上面

1、需要證明的結論:

①mysql客戶端和mysql服務器部署在不同機器上面時,用mysql -h192.168.163.130 -p123登入mysql服務器讀取本機[client]參數信息,通過TCP/IP協議連接;

2、開始證明以上結論:

①mysql客戶端和mysql服務器部署在不同機器上面時,用mysql -h192.168.163.130 -p123登入mysql服務器讀取本機[client]參數信息,通過TCP/IP協議連接;

第一步:

mysql客戶端my.cnf配置信息:

[client]
port=3306

mysql服務器my.cnf配置信息:

[mysqld]
port=3306

可以正常連接:

第二步:

mysql客戶端my.cnf配置信息:

[client]
port=3307

mysql服務器my.cnf配置信息:

[mysqld]
port=3306

連接mysql服務器報錯:

 

指定mysql服務器端口連接,則成功:

得出結論:

mysql客戶端和mysql服務器部署在不同機器上面時,用mysql -h192.168.163.130 -p123登入mysql服務器讀取本機[client]參數信息,通過TCP/IP協議連接;

以上內容希望可以幫助你更深刻了解linux下mysql的連接方式

筆者寄語:大多數IT人掌握的知識都是花拳綉腿,只有少部分人不忘初心;加油!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM