Navicat for MySQL遠程連接報10038的錯誤


####################################################

"""

1、網絡檢測
   1)ping主機可以;
   2)telnet 主機3306端口不可以;
     telnet 主機22端口可以;
   說明與本機網絡沒有關系;

如果本地端口監聽狀態 telnet 127.0.0.1 3306 看看是否成功, 如果成功, 則 在遠程 telnet 公網ip 3306 來判斷一下是否成功, 如果成功說明沒有問題, 如果失敗,繼續往下看
"""

 

####################################################

"""

2、端口檢測
   1)netstat -ntpl |grep 3306
    tcp        0      0 :::3306                     :::*                        LISTEN      - 
   2)netstat -ntpl |grep 22
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -   
   可以看出22端口監聽所有地址,而3306只監聽本機地址(綁定了到了本地),所以遠程無法訪問。
    對於端口只允許本機訪問,有兩個地方啟用,一個是防火牆啟用3306,一個就是mysql配置綁定本機地址。


"""

 

####################################################

"""

3、防火牆檢測
   1)iptables --list查看;
   2)開啟防火牆3306端口
     vi /etc/sysconfig/iptables
     -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允許3306端口通過防火牆) 
     /etc/init.d/iptables restart(重啟防火牆使配置生效)
   3)或者直接關閉防火牆;

防火牆的操作,Ubuntu
打開3306號端口:sudo ufw allow 3306
查看端口狀態:sudo ufw status    # allow就是開放的。
關閉防火牆:sudo ufw disable
開啟防火牆:sudo ufw enable


"""

 

###################################################

"""

4、mysql配置文件檢查
   檢查my.cnf的配置,bind-address=addr可以配置綁定ip地址。
   不配置或者IP配置為0.0.0.0,表示監聽所有客戶端連接。
   #ps -aux | grep mysql  查看進程ID是3340
   #ll /proc/3340 查看進程程序情況,找配置文件
   或者#which mysql 找程序路徑
執行命令 netstat -an|grep 3306​,如果3306前面是127.0.0.1,那么就要修改配置文件了


修改配置文件,網上很多就是如下圖所示的修改方法,
vim /etc/mysql/my.cnf
vim /etc/mysql/mysql.conf.d/mysqld.cnf。發現bind-address = 127.0.0.1。


"""

 

####################################################

"""
5、mysql用戶訪問權限
   進入mysql數據庫
   $mysql -u root -p
   >use mysql;
   >select host,user from user;
    MySQL建用戶的時候會指定一個host,默認是127.0.0.1/localhost只能本機訪問;
    其它機器用這個用戶帳號訪問會提示沒有權限,host改為%,表示允許所有機器訪問

登錄mysql;
執行    use mysql;
執行    select user,host from mysql.user;
執行    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Ji10201749!'; 
執行    FLUSH PRIVILEGES;
重啟mysql服務   service mysqld restart; 
"""

mysql用戶操作

"""

1.新建用戶。

//登錄MYSQL
@>mysql -u root -p
@>密碼
//創建用戶
mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
//刷新系統權限表
mysql>flush privileges;
這樣就創建了一個名為:phplamp  密碼為:1234  的用戶。

然后登錄一下。

mysql>exit;
@>mysql -u phplamp -p
@>輸入密碼
mysql>登錄成功

2.為用戶授權。

//登錄MYSQL(有ROOT權限)。我里我以ROOT身份登錄.
@>mysql -u root -p
@>密碼
//首先為用戶創建一個數據庫(phplampDB)
mysql>create database phplampDB;
//授權phplamp用戶擁有phplamp數據庫的所有權限。
>grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系統權限表
mysql>flush privileges;
mysql>其它操作

3.刪除用戶。
@>mysql -u root -p
@>密碼
mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost";
mysql>flush privileges;
//刪除用戶的數據庫
mysql>drop database phplampDB;

4.修改指定用戶密碼。
@>mysql -u root -p
@>密碼
mysql>update mysql.user set password=password('新密碼') where User="phplamp" and Host="localhost";
mysql>flush privileges;
"""
View Code

####################################################

"""

mysql是否啟動
這個比較簡單, ps -ef | grep mysql 如果能看到對應的進程就是沒有問題的


"""

 

####################################################

"""
添加阿里雲安全組規則,我也添加了,

"""

 

 

 

 ####################################################

linux 如何查看3306端口號是否打開
在Linux使用過程中,需要了解當前系統開放了哪些端口,並且要查看開放這些端口的具體進程和用戶,可以通過netstat命令進行簡單查詢
 netstat命令各個參數說明如下:
   -t : 指明顯示TCP端口
   -u : 指明顯示UDP端口
     -l : 僅顯示監聽套接字(所謂套接字就是使應用程序能夠讀寫與收發通訊協議(protocol)與資料的程序)

  -p : 顯示進程標識符和程序名稱,每一個套接字/端口都屬於一個程序。
   -n : 不進行DNS輪詢,顯示IP(可以加速操作)
   -a 顯示所有狀態的socket

即可顯示當前服務器上所有端口及進程服務,於grep結合可查看某個具體端口及服務情況··
netstat -ntlp   //查看當前所有tcp端口·
netstat -ntulp |grep 80   //查看所有80端口使用情況·
netstat -an | grep 3306   //查看所有3306端口使用情況·

 

 ####################################################

ps –aux     //查看進程號
ps –aux | more //全部查看
ps –ef | grep mysql //查看mysql的進程
kill -9 3306 //強制殺掉進程號3306

 

  ####################################################

 

 

 

首先要聲明一下:一般情況下,修改MySQL密碼,授權,是需要有mysql里的root權限的。

注:本操作是在WIN命令提示符下,phpMyAdmin同樣適用。
    用戶:phplamp  用戶數據庫:phplampDB

1.新建用戶。

//登錄MYSQL
@>mysql -u root -p
@>密碼
//創建用戶
mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
//刷新系統權限表
mysql>flush privileges;
這樣就創建了一個名為:phplamp  密碼為:1234  的用戶。

然后登錄一下。

mysql>exit;
@>mysql -u phplamp -p
@>輸入密碼
mysql>登錄成功

2.為用戶授權。

//登錄MYSQL(有ROOT權限)。我里我以ROOT身份登錄.
@>mysql -u root -p
@>密碼
//首先為用戶創建一個數據庫(phplampDB)
mysql>create database phplampDB;
//授權phplamp用戶擁有phplamp數據庫的所有權限。
>grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系統權限表
mysql>flush privileges;
mysql>其它操作



3.刪除用戶。
@>mysql -u root -p
@>密碼
mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost";
mysql>flush privileges;
//刪除用戶的數據庫
mysql>drop database phplampDB;

4.修改指定用戶密碼。
@>mysql -u root -p
@>密碼
mysql>update mysql.user set password=password('新密碼') where User="phplamp" and Host="localhost";
mysql>flush privileges;


免責聲明!

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



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