最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL遠程訪問配置與常見問題解決指南

 更新時間:2026年04月28日 09:24:30   作者:code bean  
本文記錄了一次MySQL遠程連接過程中遇到的坑及其解決方案,主要包括基礎(chǔ)命令行操作、遠程訪問配置、認證插件不兼容、IP被拉黑等問題,提出了解決方案,需要的朋友可以參考下

本文記錄了一次完整的 MySQL 遠程連接踩坑過程,涵蓋基礎(chǔ)命令行操作、認證插件報錯、IP 被拉黑等問題及解決方案。

一、MySQL 基礎(chǔ)命令行操作

1.1 登錄與退出

# 本地登錄(默認走 localhost)
mysql -u root -p
# 指定 IP 登錄(走網(wǎng)絡(luò)連接)
mysql -h 192.168.1.100 -u root -p
# 指定端口
mysql -h 192.168.1.100 -P 3306 -u root -p
# 退出
exit;
-- 或
quit;

1.2 用戶管理

-- 查看所有用戶
SELECT User, Host, plugin FROM mysql.user;
-- 創(chuàng)建本地用戶
CREATE USER 'alice'@'localhost' IDENTIFIED BY '密碼';
-- 創(chuàng)建遠程用戶(允許任意 IP)
CREATE USER 'bob'@'%' IDENTIFIED BY '密碼';
-- 創(chuàng)建遠程用戶(只允許特定 IP)
CREATE USER 'charlie'@'192.168.1.50' IDENTIFIED BY '密碼';
-- 修改密碼
ALTER USER 'bob'@'%' IDENTIFIED BY '新密碼';
-- 刪除用戶
DROP USER 'bob'@'%';
-- 刷新權(quán)限(修改后必須執(zhí)行)
FLUSH PRIVILEGES;

1.3 權(quán)限管理

-- 授予所有權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'bob'@'%';

-- 授予特定數(shù)據(jù)庫權(quán)限
GRANT ALL PRIVILEGES ON mydb.* TO 'bob'@'%';

-- 授予只讀權(quán)限
GRANT SELECT ON mydb.* TO 'readonly'@'%';

-- 撤銷權(quán)限
REVOKE ALL PRIVILEGES ON *.* FROM 'bob'@'%';

-- 查看用戶權(quán)限
SHOW GRANTS FOR 'bob'@'%';

1.4 數(shù)據(jù)庫與表操作

-- 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 查看所有數(shù)據(jù)庫
SHOW DATABASES;

-- 切換數(shù)據(jù)庫
USE mydb;

-- 創(chuàng)建表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 查看表結(jié)構(gòu)
DESC users;
-- 或
SHOW CREATE TABLE users;

-- 插入數(shù)據(jù)
INSERT INTO users (name, email) VALUES ('張三', 'zhangsan@example.com');

-- 查詢
SELECT * FROM users WHERE name LIKE '%張%';

-- 更新
UPDATE users SET email = 'new@example.com' WHERE id = 1;

-- 刪除
DELETE FROM users WHERE id = 1;

1.5 服務(wù)管理(Linux)

# 啟動
sudo systemctl start mysql
# 停止
sudo systemctl stop mysql
# 重啟
sudo systemctl restart mysql
# 查看狀態(tài)
sudo systemctl status mysql

二、遠程訪問配置

2.1 服務(wù)端配置

編輯 MySQL 配置文件:

  • Linux: /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf
  • Windows: my.ini
# 允許所有網(wǎng)卡監(jiān)聽(默認 127.0.0.1 只監(jiān)聽本地)
bind-address = 0.0.0.0
# 或注釋掉該行
# bind-address = 127.0.0.1

重啟生效:

sudo systemctl restart mysql

2.2 防火墻放行

# UFW (Ubuntu/Debian)
sudo ufw allow 3306/tcp
# firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
# 云服務(wù)器還需在安全組中放行 3306 端口

2.3 用戶授權(quán)

-- 創(chuàng)建遠程專用用戶(推薦)
CREATE USER 'remote_user'@'%' IDENTIFIED BY '強密碼';
GRANT ALL PRIVILEGES ON mydb.* TO 'remote_user'@'%';
FLUSH PRIVILEGES;

三、踩坑實錄:認證插件與 IP 拉黑

3.1 環(huán)境背景

  • 服務(wù)端: MySQL 8.0(Linux 服務(wù)器)
  • 客戶端: Windows C++ 程序,使用較老的 MySQL C API 庫
  • 連接方式: mysql_real_connect(conn, "10.136.11.246", "root", ...)

3.2 第一坑:IP 被拉黑

報錯信息:

mysql_real_connect failed: Host '10.136.26.183' is blocked because of many connection errors;
unblock with 'mysqladmin flush-hosts'

原因分析:
MySQL 有安全機制,當某個 IP 連續(xù)多次連接失?。J閾值 100 次),會自動將該 IP 加入黑名單,防止暴力 破解。

解決方法:

# 服務(wù)端執(zhí)行,清空黑名單
mysqladmin flush-hosts

或登錄 MySQL 后:

FLUSH HOSTS;

3.3 第二坑:認證插件不兼容

報錯信息:

mysql_real_connect failed: Authentication plugin 'caching_sha2_password' cannot be loaded: 找不到指定的模塊。

原因分析:
MySQL 8.0 默認使用 caching_sha2_password 認證插件,但客戶端(C++ 的 MySQL 庫)版本太老,不支持這個插件。

根本區(qū)別:

MySQL 版本默認認證插件兼容性
5.7 及以前mysql_native_password老客戶端都支持
8.0+caching_sha2_password需要新版客戶端庫

3.4 第三坑:ALTER USER 報錯

報錯信息:

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'10.136.11.246'

原因分析:
MySQL 的用戶是 用戶名 + Host 的組合。查詢發(fā)現(xiàn)系統(tǒng)中只有:

SELECT User, Host FROM mysql.user;

結(jié)果:

+------+-----------+
| User | Host      |
+------+-----------+
| root | %         |
| root | localhost |
+------+-----------+

'root'@'10.136.11.246' 這個用戶根本不存在!

MySQL 用戶匹配規(guī)則:

Host 值含義
localhost只允許本機 socket 連接
127.0.0.1只允許本機 TCP 連接
192.168.1.%允許該網(wǎng)段
10.136.11.246只允許該特定 IP
%允許任意 IP(最寬松)

注意localhost10.136.11.246

  • localhost127.0.0.1,不經(jīng)過網(wǎng)卡
  • 10.136.11.246 是服務(wù)器的實際網(wǎng)卡 IP,走網(wǎng)絡(luò)協(xié)議

四、完整解決過程

步驟 1:確認現(xiàn)有用戶

SELECT User, Host, plugin FROM mysql.user WHERE User = 'root';

確認有 'root'@'%' 存在。

步驟 2:修改認證插件(服務(wù)端執(zhí)行)

-- 修改已存在的 'root'@'%' 用戶
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密碼';
FLUSH PRIVILEGES;

步驟 3:驗證修改結(jié)果

SELECT User, Host, plugin FROM mysql.user WHERE User = 'root';

確認 'root'@'%'plugin 變?yōu)?mysql_native_password

步驟 4:清空 IP 黑名單

FLUSH HOSTS;

步驟 5:客戶端連接測試

C++ 代碼:

#include <mysql.h>
MYSQL* conn = mysql_init(nullptr);
if (!mysql_real_connect(conn, 
                        "10.136.11.246",  // 服務(wù)器 IP
                        "root",           // 用戶名
                        "你的密碼",        // 密碼
                        "數(shù)據(jù)庫名",        // 數(shù)據(jù)庫
                        3306,             // 端口
                        nullptr, 0)) {
    printf("連接失敗: %s\n", mysql_error(conn));
} else {
    printf("連接成功!\n");
}
mysql_close(conn);

五、其他解決方案對比

方案 A:改服務(wù)端認證方式(本文采用)

優(yōu)點:客戶端不用改,快速解決
缺點:安全性略降,新特性無法使用

-- 改單個用戶
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';

-- 或改全局默認(my.cnf)
[mysqld]
default_authentication_plugin = mysql_native_password

方案 B:升級客戶端庫(推薦長期方案)

優(yōu)點:支持最新特性,更安全
缺點:需要重新編譯項目

  • 下載 MySQL Connector/C++ 8.0+: https://dev.mysql.com/downloads/connector/cpp/
  • 或更新 C API 的 libmysql.dll 到 8.0 版本

方案 C:使用 SSH 隧道(最安全)

# 本地建立隧道,把遠程 3306 映射到本地 3307
ssh -L 3307:localhost:3306 user@服務(wù)器IP
# 然后 C++ 連接本地 3307,實際走的是加密 SSH
mysql_real_connect(conn, "127.0.0.1", "root", ..., 3307, ...);

優(yōu)點:不暴露 3306 端口,全程加密
缺點:需要額外配置 SSH

六、安全建議

  1. 不要用 root 遠程訪問:創(chuàng)建專用賬號,最小權(quán)限原則
  2. 限制 Host 范圍:能用 192.168.1.% 就不要用 %
  3. 強密碼 + SSL:生產(chǎn)環(huán)境必須配置 SSL 連接
  4. 修改默認端口:將 3306 改為其他端口,減少掃描
  5. fail2ban:自動封禁暴力 破解 IP

七、常用排查命令速查

-- 查看當前連接
SHOW PROCESSLIST;

-- 查看連接錯誤閾值
SHOW VARIABLES LIKE 'max_connect_errors';

-- 修改閾值(臨時)
SET GLOBAL max_connect_errors = 1000;

-- 查看用戶認證方式
SELECT User, Host, plugin, authentication_string FROM mysql.user;

-- 查看被拉黑的 IP(performance_schema 需開啟)
SELECT * FROM performance_schema.host_cache WHERE SUM_CONNECT_ERRORS > 0;

總結(jié)

問題現(xiàn)象解決
IP 被拉黑Host is blockedFLUSH HOSTS;
認證插件不支持caching_sha2_password cannot be loadedmysql_native_password 或升級客戶端
用戶不存在Operation ALTER USER failedSELECT 查用戶,確認 Host 正確
localhost vs IP連接方式不同,匹配的用戶不同明確用 % 還是具體 IP

核心教訓:MySQL 的用戶是 用戶名@Host 的組合,修改前務(wù)必先查清楚!

本文基于 MySQL 8.0 + Windows C++ 客戶端的真實踩坑經(jīng)歷整理。

到此這篇關(guān)于MySQL遠程訪問配置與常見問題解決指南的文章就介紹到這了,更多相關(guān)MySQL遠程訪問配置與常見問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL 查詢某個字段含有字母數(shù)字的值示例詳解

    MySQL 查詢某個字段含有字母數(shù)字的值示例詳解

    在本文中,我們詳細介紹了如何在 MySQL 中查詢某個字段含有字母和數(shù)字的值,我們首先介紹了正則表達式的基礎(chǔ)知識,然后通過五個具體示例展示了如何應(yīng)用這些知識,通過這些示例,我們可以看到正則表達式在處理復(fù)雜字符串模式匹配時的強大功能,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 在JPA項目啟動時如何新增MySQL字段

    在JPA項目啟動時如何新增MySQL字段

    這篇文章主要介紹了在JPA項目啟動時新增MySQL字段,本來用了JPA,直接實體類加參數(shù)就可以新增字段了,但是架不住垃圾項目在啟動項目時會加載數(shù)據(jù)庫SQL文件去插入數(shù)據(jù),需要一些操作幫助修復(fù),需要的朋友可以參考下
    2024-06-06
  • MySQL的?DDL和DML和DQL的基本語法詳解

    MySQL的?DDL和DML和DQL的基本語法詳解

    SQL語句,即結(jié)構(gòu)化查詢語言(Structured?Query?Language),是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng),這篇文章主要介紹了MySQL的?DDL和DML和DQL的基本語法,需要的朋友可以參考下
    2022-07-07
  • MySQLexplain之possible_keys、key及key_len詳解

    MySQLexplain之possible_keys、key及key_len詳解

    這篇文章主要介紹了MySQLexplain之possible_keys、key及key_len的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • mysql中InnoDB事務(wù)隔離的記錄鎖、間隙鎖和臨鍵鎖

    mysql中InnoDB事務(wù)隔離的記錄鎖、間隙鎖和臨鍵鎖

    mysql中InnoDB默認的事務(wù)隔離級別為可重復(fù)讀(Repeated Read, RR),我們當下的所有介紹都是基于這個隔離級別為前提的,記錄鎖鎖定索引關(guān)聯(lián)的具體記錄,間隙鎖鎖定間隔,防止間隔中被其他事務(wù)插入,臨鍵鎖鎖定索引記錄+間隔,防止幻讀
    2023-12-12
  • MySQL sysdate()函數(shù)的具體使用

    MySQL sysdate()函數(shù)的具體使用

    本文主要介紹了MySQL sysdate()函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現(xiàn)服務(wù)無法啟動問題

    解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現(xiàn)服務(wù)無法啟動問題

    這篇文章主要介紹了解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現(xiàn)服務(wù)無法啟動問題,需要的朋友可以參考下
    2017-05-05
  • CentOS系統(tǒng)中MySQL5.1升級至5.5.36

    CentOS系統(tǒng)中MySQL5.1升級至5.5.36

    有相關(guān)測試數(shù)據(jù)說明從5.1到5.5+,MySQL性能會有明顯的提升,具體的需要自己建立測試環(huán)境去實踐下,今天我們就來操作下,并記錄下來升級的具體步驟
    2017-07-07
  • MySQL對varchar類型數(shù)字進行排序的實現(xiàn)方法

    MySQL對varchar類型數(shù)字進行排序的實現(xiàn)方法

    這篇文章主要介紹了MySQL對varchar類型數(shù)字進行排序的實現(xiàn)方法,文中用的是CAST方法,MySQL CAST()函數(shù)用于將值從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種特定數(shù)據(jù)類型,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-04-04
  • DataGrip的MySQL數(shù)據(jù)導出和導入操作超詳細指南

    DataGrip的MySQL數(shù)據(jù)導出和導入操作超詳細指南

    很多時候我們會遇到需要將本機數(shù)據(jù)庫數(shù)據(jù)導出或者其他數(shù)據(jù)庫數(shù)據(jù)的導入操作,這篇文章主要給大家介紹了關(guān)于DataGrip的MySQL數(shù)據(jù)導出和導入操作超詳細指南,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-04-04

最新評論

鄂尔多斯市| 兰州市| 伊吾县| 武夷山市| 方山县| 扎鲁特旗| 富顺县| 沁阳市| 疏附县| 舞钢市| 通渭县| 南城县| 嘉定区| 牡丹江市| 连南| 南丰县| 夏津县| 庄浪县| 广南县| 綦江县| 巴塘县| 鄂伦春自治旗| 白山市| 年辖:市辖区| 鹿邑县| 米脂县| 鸡东县| 廊坊市| 济源市| 容城县| 永川市| 丘北县| 青铜峡市| 本溪市| 奉节县| 晋州市| 高陵县| 鄂托克旗| 金沙县| 明溪县| 泗水县|