MySQL8使使用者可遠端訪問資料庫

2021-09-29 00:12:08 字數 3768 閱讀 7307

原因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)

查網上的文件,發現有使用如下語句:

grant all privileges on *.* to 'jack'@』192.168.107.1』 identified by 'password' with grant option;

原因2解決方法:

方法一:配置防火牆開放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感興趣的小夥伴可參看此站點:

linux實驗室->centos7防火牆firewalld命令大全

方法二:關閉防火牆並禁用服務自啟動【高可用但不安全】step 1:關閉防火牆:

[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 的使用者並把密碼...