原因1:使用者無遠端訪問主機配置
在mysql官方文件6.2.6 access control, stage 1: connection verification中指出,使用者訪問資料庫需要進行使用者主機驗證,當使用者遠端訪問主機配置為localhost
時,無法實現遠端訪問
原因2:作業系統預設防火牆配置禁止資料庫3306埠
以centos7為例,在安裝作業系統後,firewall屬於預設安裝且隨開機自啟,預設配置禁用3306埠
原因3:mysql配置檔案中設定本地ip/localhost繫結
原因1解決方法:
使用root使用者本地登入資料庫,使用update語句修改mysql資料中user表對應使用者的host欄位為%
或指定網域名稱/ip
,如下操作:
mysql> use mysql
database changed
mysql>
select user,host from user where user=
'jack'
;+------------------+-----------+
| user | host |
+------------------+-----------+
| jack | localhost |
+------------------+-----------+
mysql> update user set host=
'192.168.107.1' where user=
'jack'
;query ok, 1 row affected (0.04 sec)
rows matched: 1 changed: 1 warnings: 0
mysql>
select user,host from user where user=
'jack'
;+------+---------------+
| user | host |
+------+---------------+
| jack | 192.168.107.1 |
+------+---------------+
1 row in
set(0.01 sec)
查網上的文件,發現有使用如下語句:原因2解決方法:
grant all privileges on *.* to 'jack'@』192.168.107.1』 identified by 'password' with grant option;
方法一:配置防火牆開放3306埠【安全性有保障】
step 1:查詢防火牆當前預設zone:
[root@localhost ~]
# firewall-cmd --get-active-zone
public
inte***ces: ens33
step 2:向預設zone新增永久生效放行埠3306:
[root@localhost ~]
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@localhost ~]
# firewall-cmd --reload
success
[root@localhost ~]
# firewall-cmd --zone=public --list-ports
3306/tcp
對linux系統firewall感興趣的小夥伴可參看此站點:方法二:關閉防火牆並禁用服務自啟動【高可用但不安全】step 1:關閉防火牆:linux實驗室->centos7防火牆firewalld命令大全
[root@localhost ~]
# systemctl stop firewalld
step 2:禁用防火牆服務自啟動
原因3解決方法:
[root@localhost ~]
# vi /etc/my.cnf
#配置檔案編輯注釋如下配置
#bind-address=127.0.0.1
#儲存並退出
[root@localhost ~]
# systemctl restart mysqld
[root@localhost ~]
# systemctl status mysqld
● mysqld.service - mysql server
loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
active: active (running) since 六 2019-10-26 03:17:27 cst; 9s ago
docs: man:mysqld(8)
process: 15443 execstartpre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/success)
main pid: 15466 (mysqld)
status: "server is operational"
cgroup: /system.slice/mysqld.service
└─15466 /usr/sbin/mysqld
10月 26 03:17:21 localhost.localdomain systemd[1]: stopped mysql server.
10月 26 03:17:21 localhost.localdomain systemd[1]: starting mysql server...
10月 26 03:17:27 localhost.localdomain systemd[1]: started mysql server.
mysql8建立不了使用者 mysql8建立使用者
假如是mysql8版本的話,使用 grant all privileges to 使用者 localhost identified by 自定義密碼 會報錯,因為要先建立使用者再進行賦權,不能同時進行 建立使用者 create user 使用者名稱 localhost identified by 密...
MySQL8使用者管理
mysql create user user1 localhost identified by 123456 identified by 後面是密碼,直接寫就可,不需再加password 函式。使用剛剛建立的使用者登入,然後執行show databases會發現只有乙個名為information s...
mysql8建立使用者
create user test user identified by test2022 grant allprivileges on test.to test user with grant option flush privileges 這樣就可以建立乙個叫 test user 的使用者並把密碼...