Linux mysql開啓遠程訪問權限

1. 添加服務器安全組規則(3306)

添加安全組規則

2. 添加服務器防火牆安全端口(3306)(以centos爲例)

防火牆端口未放行報錯:
防火牆端口未放行報錯

2.1 查看firewall防火牆狀態:
systemctl status firewalld 

防火牆狀態

firewall-cmd --state

防火牆狀態

2.2 啓動firewall防火牆
systemctl start  firewalld
  1. 設置開機啓用防火牆
systemctl enable firewalld.service
  1. 設置開機不啓動防火牆
systemctl disable firewalld.service
2.3 關閉firewall防火牆
systemctl disable firewalld
2.4 查看firewall防火牆開放的端口

(1)查看防火牆的所有信息

firewall-cmd --list-all

(2)查看防火牆所有開放端口信息

firewall-cmd --list-ports

(3)查看某個端口信息(yes表示已放行,no表示未放行

firewall-cmd --zone=public --query-port=3306/tcp

查看3306端口信息

說明:
--zone 作用域
--query-port=3306/tcp 查詢端口,格式爲:端口/通訊協議

2.5 放行firewall防火牆端口

(1)放行某個端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

成功開放3306端口

說明:
--zone 作用域
--add-port=3306/tcp 添加端口,格式爲:端口/通訊協議
--permanent 永久生效,沒有此參數重啓後失效

(2)放行一個端口區間

firewall-cmd --zone=public --add-port=3306-8888/tcp --permanent

刪除放行端口

firewall-cmd --zone=public --remove-port=3306/tcp --permanent
2.6 重新加載firewall(將修改應用於防火牆)
firewall-cmd --reload

重新加載firewall

3. 添加服務器防火牆安全端口(3306)(以ubuntu爲例)

3.1 查看UFW防火牆狀態以及本機放行端口
ufw status或sudo ufw status

查看某一端口是否被監聽

netstat -an | grep 端口號
3.2 打開UFW防火牆
sudo ufw enable
3.3 關閉UFW防火牆
sudo ufw disable
3.4 UFW防火牆放行某個端口
ufw allow 3306
  1. 拒絕放行某個端口
ufw deny 端口號
  1. 刪除某個放行/拒絕放行端口的規則
ufw delete allow/deny 端口號
3.5 UFW防火牆重啓
sudo ufw reload

4. 查看並編輯mysql的配置文件

4.1 查詢mysql配置文件的位置(my.cnf)
mysql --help|grep my.cnf

whereis my.cnf
4.2 編輯my.cnf

一般位置爲/etc/my.cnf,準確位置以第一步查詢到的爲準

vi /etc/my.cnf

點擊鍵盤的i,進入插入模式,可以編輯該文件。
(1)若[mysqld]節中有一行bind-address=127.0.0.1則表示僅在本地環路地址127.0.0.1的3306端口監聽,將其註釋即可。

#bind-address=127.0.0.1

(2)在[mysqld]節中增加下面一行:(可選,若配置完成報錯,則可進行這一步)
Mysql默認在本地環路地址127.0.0.1的3306端口監聽,要使用外網訪問需要修改配置文件。

bind-address=0.0.0.0 #全部地址或者指定的ip地址

(3)退出並保存配置
點擊鍵盤的Esc鍵,並輸入:wq,退出並保存該文件。

4.3 重啓mysqld服務
service mysqld restart

5. 配置mysql用戶訪問權限

未配置用戶遠程訪問權限報錯:
未配置用戶遠程訪問

5.1 以管理員(root)身份連接mysql數據庫
mysql -u root -p
5.2 選擇mysql庫,用戶信息都存在這個庫的user表中

若未進行這一步操作,則之後操作表都需要寫成mysql.user,否則會報錯:ERROR 1046 (3D000): No database selected

use mysql;
5.3 查詢用戶列表
select user, host, authentication_string, plugin from User;

或(若沒有選擇mysql庫)

select user, host, authentication_string, plugin from mysql.User;

查看錶格中 root 用戶的 host,默認應該顯示的 localhost,只支持本地訪問,不允許遠程訪問。

5.4 創建可遠程登陸用戶並賦予權限(以mysql8之前的版本爲例)
grant privileges on *.* to 'user'@'host' identified by 'password';  

user:你將創建的用戶名。
host:指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%
password:該用戶的登陸密碼,密碼可以爲空,如果爲空則該用戶可以不需要密碼登陸服務器,但是如果使用navcat登錄則必須要密碼。

例如:

grant all on *.* to 'root'@'%' identified by 'root';

但是在mysql8中已經不支持grant命令創建並賦予權限,會報錯`

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'root'' at line 1`
5.6 創建可遠程登陸用戶並賦予權限(適用於mysql任何版本)

(1)創建用戶(可遠程訪問使用%

create User 'user'@'host' identified by 'password';

或(若沒有選擇mysql庫)

create mysql.User 'user'@'host' identified by 'password';

說明:
username:你將創建的用戶名。
host:指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%。
password:該用戶的登陸密碼,密碼可以爲空,如果爲空則該用戶可以不需要密碼登陸服務器,但是如果使用navcat登錄則必須要密碼。

例如:

create User 'root'@'%' identified by 'root';
create User 'student'@'localhost' identified by '123';
create User 'student'@'本機IP' identified by '123';
create User 'student'@'%' identified by '';

(2)用戶授權(授予全部權限使用all,全部數據庫全部表格使用*.*

grant privileges on database.table to 'user'@'host';

說明:
privileges:用戶的操作權限,如selectinsertupdate等,如果要授予所的權限則使用all
databasename:數據庫名。
tablename:表名,如果要授予該用戶對所有數據庫和表的相應操作權限則可用*表示,如*.*
例如:

grant all on *.* to 'root'@'%';
grant insert on studentsystem.guide to 'student'@'localhost';

注意:
用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令:

grant privileges on database.table to 'user'@'host' with grant option;
5.7 重新加載權限表數據

這一步一定要做,不然無法成功! 這句表示從mysql數據庫的grant表中重新加載權限數據。因爲MySQL把權限都放在了cache中,所以在做完更改後需要重新加載。

flush privileges; 
5.8 刪除用戶及權限

(1)刪除用戶數據

delete from User where Host='%';

或(若沒有選擇mysql庫)

delete from mysql.User where Host='%';

(2)重新加載權限表數據

flush privileges; 

6. 使用Navcat for Mysql訪問遠程數據庫

詳情見Navicat 12 for MySQL下載、安裝及使用教程(https://blog.csdn.net/weixin_44222492/article/details/98775090)
測試連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章