㈠ mysql如何遠程連接伺服器
Mysql提供了一套C API函數,可以直接操縱資料庫(功能還是很強大的). 用VC開發一個客戶端程序,需要連接一個遠程的資料庫.
第一步:建立一個MYSQL"對象 ",然後對其初始化(文檔中要求的);
第二步:使用mysql_real_connect函數連接,不建議使用mysql_connect (這是一個較早的版本);
注意:通過TCP/IP方式連接,所以HOST一項填伺服器的IP地址,例如: 166.111.***.***
其次,提供登陸名(USER)和密碼(PWD),以及默認連接的資料庫名稱.
當Mysql建構在一台linux伺服器上,自然存在linux本身的密碼校驗.
我不知道有什麼好的方法,只是試著將資料庫的username和pwd設置的和linux的一致,然後求通過了
㈡ mysql連接不上伺服器怎麼辦
排除網路或防火牆問題
先看是否能ping通遠程伺服器,ping 192.168.1.211,如果不可以就是網路問題。然後,檢查埠是否被防火牆擋住了,telnet 192.168.1.211 3306,如果連接失敗,配置防火牆。
配置防火牆,開啟3306埠
2.檢查MySQL配置
如果開啟了防火牆,telnet還是失敗,通過netstat查看3306的埠狀態:
netstat -apn|grep 3306tcp6 0 0 127.0.0.1:3306 :::* LISTEN 13524/mysqld注意地方,這說明3306被綁定到了本地。檢查一下my.cnf的配置,這里可以配置綁定ip地址。
bind-address=addr
不配置或者IP配置為0.0.0.0,表示監聽所有客戶端連接。
ps:我開啟3306埠,並且檢查MySQL配置之後,telent仍然失敗,但是在本機telnet是ok的,再三確認了配置沒有問題。後來跟我們的ucloud賬號管理員提了一下,才知道ucloud管理後台也需要開啟3306埠,用雲伺服器的留意這個。
3.檢查用戶訪問許可權
MySQL建用戶的時候會指定一個host,默認是127.0.0.1/localhost,那麼這個用戶就只能本機訪問,其它機器用這個用戶帳號訪問會提示沒有許可權,host改為%,表示允許所有機器訪問。
最後,別忘了重啟mysql使配置生效。
以上幾個原因,你看一下是否適用你的情況
㈢ MySQL localhost無法連接資料庫怎麼辦
一台伺服器的php程序通過localhost地址無法連接資料庫的原因是socket沒有正確設置。 連接MySQL資料庫有兩種方式:TCP/IP(一般理解的埠的那種)和Unix套接字(一般叫socket或者sock)。大部分情況下,可以用localhost代表本機127.0.0.1,但是在MySQL連接時,二者不可混用,而且MySQL中許可權設置中localhost與127.0.0.1也是分開設置的。當設置為127.0.0.1時,系統通過TCP/IP方式連接資料庫;當設置為localhost時,系統通過socket方式連接資料庫。 解決方法: 1、看本機MySQL的socket套接字文件在哪裡,查看命令是: mysqld --verbose --help | grep socket 輸出結果顯示套接字文件的位置,比如:這台伺服器顯示的是 socket /var/run/mysqld/mysqld.sock 2、修改php的配置文件php.ini與之對應關系: 找到:mysql.default_socket這個key 把值設置為:mysql.default_socket = /var/run/mysqld/mysqld.sock 3、啟一下fastcgi進程,再次用localhost就可以正常連接了。
㈣ 如何命令行連接mysql資料庫
使用命令行連接MySQL資料庫:
Windows操作系統下,開始——運行,打開"運行"對話框,輸入cmd,點擊「確定」即可進入DOS窗口。
DOS窗口輸入登錄MySQL資料庫命令
mysql -h 127.0.0.1 -u root -p
命令參數說明:
mysql是登錄資料庫的命令,-h 後面跟伺服器的IP,由於本示例MySql伺服器安裝在本地,因此IP地址為127.0.0.1;-u 後面跟用戶名,本示例採用 root用戶登錄;-p 後面跟登錄密碼。
輸入上述命令後回車,再輸入登錄密碼,在回車即可完成登錄MySQL資料庫服務了。跟著可以運行use databaseName語句操作某個資料庫了
㈤ 在Linux下安裝完mysql可以啟動但是不能使用命令連接 怎麼辦啊
遠程連接嗎
啟動成功過後在控制台使用 Mysql -uroot -p能登錄進去嗎?
能的話 那麼應該是你主機的埠沒有開
使用 vim /etc/sysconfig/iptables
在裡面 -A INPUT -j REJECT --reject-with icmp-host-prohibited 行上面添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
把3306埠打開就可以了
㈥ mysql無法遠程連接,本地可以
查看MySQL進程是否正常,可以阿里雲伺服器 ECS 伺服器上輸入:ps -ef|grep mysqld
mysqld_safe和mysqld都在,說明MySQL進程是正常,若沒有這兩進程,執行/etc/init.d/mysqld start,啟動msyql。
MySQL在本地能連接上,遠程連接不上的解決辦法
查看mysql監聽IP和埠是否正常。
使用:netstat -anpt
監聽得地址如果是:::3306或者是0.0.0.0:3306,表示監聽所有IP地址,這監聽狀態是正常。若出現127.0.0.0:3306,說明監聽的本地地址,需要在mysql配置文件中將bind-address選項設置為bind-address = 0.0.0.0,重啟mysql。
MySQL在本地能連接上,遠程連接不上的解決辦法
查看用於遠程訪問的mysql用戶許可權是否正確。
在本地登入mysql伺服器,
use mysql;
SELECT user, host from mysql.user; 查看用於遠程訪問的mysql用戶host的許可權,%表示允許所有機器訪問。若host為127.0.0.1/localhost,那麼這個用戶就只能本機訪問,則需要將host改為%,可以使用update user set host='%' where user='root';
MySQL在本地能連接上,遠程連接不上的解決辦法
MySQL在本地能連接上,遠程連接不上的解決辦法
若以上操作都正常,還是遠程還是不能訪問的話,可以使用tcpmp在伺服器端抓一下3306埠,看是否有數據包,排查以下網路原因。
在服務上輸入抓包命令:tcpmp port 3306
然後遠程連接mysql資料庫,看一下服務端是否有數據包。
MySQL在本地能連接上,遠程連接不上的解決辦法
如果沒有數據包,查一下阿里雲伺服器 ECS下的安全組件中的配置
MySQL在本地能連接上,遠程連接不上的解決辦法
若安全組件中的配置中,入口未對資料庫服務監聽的3306埠放開,則需要將3306埠放開。如下圖,並沒有3306埠,則表示未放開該埠。
MySQL在本地能連接上,遠程連接不上的解決辦法
MySQL在本地能連接上,遠程連接不上的解決辦法
在阿里雲伺服器 ECS下的安全組件中的配置,放開3306埠。單擊添加安全組規則,如下圖:
MySQL在本地能連接上,遠程連接不上的解決辦法
MySQL在本地能連接上,遠程連接不上的解決辦法
㈦ 如何使用mysql命令連接mysql資料庫
1、連接到本機上的MYSQL命令行
首先打開DOS窗口,然後進入目錄mysql\bin,再鍵入命令mysql -u root -p,回車後提示你輸密碼.注意用戶名前可以有空格也可以沒有空格,但是如果-p後帶有用戶密碼,那麼-p與密碼之間必須沒有空格,否則讓你重新輸入密碼.例如以下都是合法的登陸:(帳號:root 密碼:123)
mysql -u root -p
mysql -uroot -p
mysql -uroot -p123
如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進入到MYSQL中了,MYSQL的提示符是: mysql>
2、連接到遠程主機上的MYSQL命令行
假設遠程主機的IP為:110.110.110.110,用戶名為root,密碼為abcd123。則鍵入以下命令:
mysql -h110.110.110.110 -u root -p 123;(注:u與root之間可以不用加空格,其它也一樣)
3、退出MYSQL命令: exit (回車)
㈧ 如何用python連接mysql資料庫
在 Python 語言環境下我們這樣連接資料庫。
In [1]: from mysql import connector
In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")
但是連接資料庫的背後發生了什麼呢?
答案
當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由MySQL 協議規定。MySQL 協議:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。
MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。
2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。
3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。
4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。
㈨ Navicat連接MySQL出錯,如何解決如何開啟mysql允許TCP/ip訪問3306窗口 在線跪等高人指點
控制項面板管理工具點服務
㈩ mysql 兩種連接方式和SSL連接、x509認證
mysql連接可分為socket連接和TCP|IP連接兩種。
[root@localhost bin]# mysql -uroot -p123456 -S/tmp/mysql.sock
-S/tmp/mysql.sock可以省略,因為默認參數如下:
假如sock文件另有其它,那麼就後面不能省略,需要指定下。
mysql -h127.0.0.1 -P3306 -uroot -p123456
那麼問題來了,如何知道當前連接的連接方式?
查看當前連接方式,使用s 或者status命令
Connection: Localhost via UNIX socket 表示使用 socket 進行本地的連接
SSL: Not in use 沒有使用SSL
Connection: 127.0.0.1 via TCP/IP 使用TCP/IP 協議進行遠程連接
SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256 使用了SSL加密
mysql5.7默認是使用SSL的方式來進行通訊的。
/s輸出SSL: Not in use,說明當前沒有使用SSL連接。
再看下error.log有一個waning:failed to set up SSL because of the following SSL liberary error:SSL context is not usable withut certificate and private key。公密鑰文件不存在,所以無法啟用SSL的連接方式。
1、進入bin目錄執行命令: mysql_ssl_rsa_setup 在/data 根目錄 生成相關的*.pem 密鑰文件。
2、對新生成到pem文件授權chown mysql:mysql *.pem
3、 /etc/init.d/mysqld restart 重啟mysql
4、進入命令客戶端執行s
使用IP/TCP遠程連接時,s輸出 SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256。說明已經用上SSL加密。
使用socket進行本地連接,就不會使用SSL加密。s輸出SSL: Not in use;
因為SSL開啟可能有性能影響。如果不希望使用ssl加密登錄連接,那麼可以使用下面命令進行禁用:mysql -h127.0.0.1 -uroot -p123456 --ssl-mode=DISABLED
強制一個用戶使用ssl
之後david用戶就必須使用ssl登錄了,否則報錯如下:
取消一個用戶強制使用ssl
x509認證在開啟SSL的基礎下,還強制指定用戶必須使用client-cert.pem和client-key.pem證書、密鑰文件來登錄,否則登錄不了。x509是mysql最高等級的認證機制。
之前已經在data根目錄生成了8個 *.pem文件
把其中client-cert.pem和client-key.pem導出
如下,再使用之前的命令登錄。發現登錄不了了。
此時想要登錄必須在客戶端指定SSL CERT File和SSL Key File 如下在navicat中
在mysql workbench中