1. 程式人生 > >Can\'t connect to MySQL server on \'\' (10060)

Can\'t connect to MySQL server on \'\' (10060)

從最新版本的linux系統開始,預設的是 Mariadb而不是mysql!這裡依舊以mysql為例進行展示

1、先檢查系統是否裝有mysql

rpm -qa | grep mysql
  • 1
  • 1

這裡寫圖片描述

這裡返回空值,說明沒有安裝

這裡執行安裝命令是無效的,因為centos-7預設是Mariadb,所以執行以下命令只是更新Mariadb資料庫

yum install mysql
  • 1
  • 1

刪除可用

yum remove mysql
  • 1
  • 1

2、下載mysql的repo源

# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
  • 1
  • 1

安裝mysql-community-release-el7-5.noarch.rpm包

# sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
  • 1
  • 1

這裡寫圖片描述

安裝這個包後,會獲得兩個mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。

這裡寫圖片描述

3、安裝mysql

# sudo yum install mysql-server
  • 1
  • 1

根據步驟安裝就可以了,不過安裝完成後,沒有密碼,需要重置密碼。

安裝後再次檢視mysql

這裡寫圖片描述

如果報錯,內容含有

Error: Package: mysql-community-libs-5.6.35-2.el7.x86_64 (mysql56-community)
           Requires: libc.so.6(GLIBC_2.17)(64bit)
Error: Package: mysql-community-server-5.6.35-2.el7.x86_64 (mysql56-community)
           Requires: libc.so.6
(GLIBC_2.17)(64bit) Error: Package: mysql-community-server-5.6.35-2.el7.x86_64 (mysql56-community) Requires: systemd Error: Package: mysql-community-server-5.6.35-2.el7.x86_64 (mysql56-community) Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit) Error: Package: mysql-community-client-5.6.35-2.el7.x86_64 (mysql56-community) Requires: libc.so.6(GLIBC_2.17)(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

解決:

#yum install glibc.i686
# yum list libstdc++*
  • 1
  • 2
  • 1
  • 2

4、重置密碼

重置密碼前,首先要登入

# mysql -u root
  • 1
  • 1

登入時有可能報這樣的錯:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2),原因是/var/lib/mysql的訪問許可權問題。下面的命令把/var/lib/mysql的擁有者改為當前使用者:

# sudo chown -R openscanner:openscanner /var/lib/mysql
  • 1
  • 1

如果報chown: 無效的使用者: "openscanner:openscanner"錯誤,更換命令,並用 ll 檢視目錄許可權列表

chown root /var/lib/mysql/
ll
  • 1
  • 2
  • 1
  • 2

這裡寫圖片描述

附: 
① 更改檔案擁有者 (chown ) 
[[email protected] ~]# chown 賬號名稱 檔案或目錄 
② 改變檔案的使用者組用命令 chgrp 
[[email protected] ~]# chgrp 組名 檔案或目錄 
③ 對於目錄許可權修改之後,預設只是修改當前級別的許可權。如果子目錄也要遞迴需要加R引數 
Chown -R : 進行遞迴,連同子目錄下的所有檔案、目錄

然後,重啟服務:

service mysqld restart
  • 1
  • 1

接下來登入重置密碼:

 mysql -u root -p
  • 1
  • 1
mysql > use mysql;
mysql > update user set password=password('123456') where user='root';
mysql > exit;
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

重啟mysql服務後才生效 # service mysqld restart

必要時加入以下命令列,為root新增遠端連線的能力。連結密碼為 “root”(不包括雙引號)

mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY "root";  
  • 1
  • 1

6、查詢資料庫編碼格式,確保是 UTF-8

show variables like "%char%";
  • 1
  • 1

這裡寫圖片描述

需要修改編碼格式為UTF-8,匯入資料庫sql的時候,請確保sql檔案為utf8編碼 
進入mysql命令列後 輸入

set names utf8;
  • 1
  • 1

(測試資料庫資料) 
再進入資料庫 use test; 
在匯入sql指令碼 source test.sql;

7、開放3306埠號 
firewalld 防火牆(centos-7)執行命令,並重啟:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
  • 1
  • 2
  • 1
  • 2

iptables 防火牆(centos6.5及其以前)執行命令

vim /etc/sysconfig/iptables
  • 1
  • 1

在檔案內新增下面命令列,然後重啟

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
  • 1
  • 1
# service iptables restart
  • 1
  • 1

外部連結訪問效果(一般建立sql資料庫和資料表,建議通過遠端連結控制,直觀易操作)

這裡寫圖片描述

Can\'t connect to MySQL server on \'\' (10060)

在排除了以下可能之後:資料庫服務已開啟;防火牆埠已開放;網路正常;

我找了半天終於發現問題:因為伺服器是在阿里雲上面買的,在設定安全組的配置規則的時候

我並沒有認真配置,

導致這裡埠3306沒有被允許,加上之後連線成功,唉


附:

出現“Warning: Using a password on the command line interface can be insecure.”的錯誤

第一種方法、修改資料庫配置檔案 
1、我們需要修改資料庫配置檔案,這個要看我們資料庫的配置的,有些是在/etc/my.cnf,有些是/etc/my.conf

這裡寫圖片描述

我們需要在[client]部分新增指令碼:

socket=/var/lib/mysql/mysql.sock  ( mysql.sock 檔案位置 )
host=localhost
user=資料庫使用者
password='資料庫密碼'
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

這裡引數要修改成我們自己的。

2、採用命令匯出和匯入資料庫 
其實在這個時候,我們如果採用”詳解使用mysqldump命令備份還原MySQL資料用法整理http://www.laozuo.org/5047.html“介紹的方法也是可以使用的,雖然依舊有錯誤提示,但是資料庫還是可以匯出的。您肯定和老左一樣是追求細節的人,一點點問題都不能有,但我們可以用下面的命令匯出和匯入,就沒有錯誤提示。

匯出資料庫

mysqldump --defaults-extra-file=/etc/my.cnf database > database.sql
  • 1
  • 1

匯入資料庫

mysql --defaults-extra-file=/etc/my.cnf database < database.sql
  • 1
  • 1

這裡我們可以看到上面的命令和以前常用的快速匯入和匯入命令有所不同了,需要載入我們配置的MYSQL配置檔案,這個“/etc/my.cnf”要根據我們實際的路徑修改。用這樣的命令匯出備份和匯入是沒有錯誤提示的。

登陸資料庫

# mysql -u root -p
  • 1
  • 1

第二種方法、利用mysql_config_editor

1、設定加密模式

mysql_config_editor set --login-path=local --host=localhost --user=db_user --password
  • 1
  • 1

“db_user”是需要修改成我們自己資料庫使用者名稱的,回車之後會提示我們輸入資料庫密碼,我們照樣輸入。

2、執行備份

mysqldump -u db_user -pInsecurePassword my_database | gzip > backup.tar.gz
  • 1
  • 1

-u db_user 
-p.InsecurePassword ( 中間的“.”記得去掉 )

根據我們資料資訊修改使用者和使用者名稱和資料庫密碼,執行備份,這裡老左測試還是有錯誤提示,但資料庫是可以備份的。

修改MySQL的root使用者的密碼: 
mysql -u root mysql 
mysql>use mysql; 
mysql>desc user; 
mysql> GRANT ALL PRIVILEGES ON . TO [email protected]”%” IDENTIFIED BY “root”;  //為root新增遠端連線的能力。 
mysql>update user set Password = password(‘xxxxxx’) where User=’root’; 
mysql>select Host,User,Password from user where User=’root’; 
mysql>flush privileges; 
mysql>exit;

重新登入:mysql -u root -p 
delete from mysql.user where user=”;  ← 刪除匿名使用者 
select user,host from mysql.user;  ← 檢視使用者資訊