翻转大师免安装绿色版
518M · 2025-11-07
输入:mysql 客户端、目标主机和端口、凭证、网络策略(防火墙、bind-address)。
输出:可用的 SQL 控制台或错误码(如 ERROR 1130)。
核心风险:暴露 root 账号、未加密传输、任意主机授权导致被动攻击面扩大。企业实践应优先考虑最小权限与加固通道(例如 SSH 隧道 / TLS)。
本地连接(推荐显式端口):
# 提示输入密码(更安全)
mysql -h 127.0.0.1 -P 3306 -u root -p
# 直接在命令行指定密码(不推荐,历史用法)
mysql -h 127.0.0.1 -P 3306 -u root -p'mysecret'
远程连接(测试):
mysql -h 203.0.113.10 -P 3306 -u myuser -p
说明:-h 可使用 IP 或域名。-P 指定端口(区分大小写)。-p 不带密码会提示交互输入,更安全。
ERROR 1130 为例)错误示例:
ERROR 1130 (HY000): Host '69.45.123.128' is not allowed to connect to this MySQL server
可能原因与检查点:
root@localhost)。mysqld 配置中 bind-address 限制为 127.0.0.1。caching_sha2_password vs 旧客户端)。优点:不修改系统 root 权限,便于审计与权限控制。
-- 在服务器上用管理员账号执行
CREATE USER 'deploy'@'203.0.113.0/24' IDENTIFIED BY 'StrongPa$$w0rd';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'deploy'@'203.0.113.0/24';
-- 或允许特定单机
CREATE USER 'ops'@'192.168.1.10' IDENTIFIED BY 'StrongPa$$';
GRANT ALL PRIVILEGES ON mydb.* TO 'ops'@'192.168.1.10';
-- 推荐显式刷新(对 CREATE/GRANT 一般不必,但可执行)
FLUSH PRIVILEGES;
建议:
'user'@'ip' 或 子网),不要使用 % 除非临时测试。不推荐把 root 的 host 改成 %。如果确实要允许远程 root(仅限短期排查):
-- 更安全的替代:在 MySQL8+ 中使用 ALTER USER 而不是直接 update mysql.user
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewStrongPassword';
CREATE USER IF NOT EXISTS 'root'@'203.0.113.128' IDENTIFIED BY 'NewStrongPassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'203.0.113.128' WITH GRANT OPTION;
FLUSH PRIVILEGES;
历史做法(不要在生产演示中直接 UPDATE mysql.user,不同版本字段名和认证插件不同,易出问题):
-- 不建议执行:可能针对老版本且字段差异大
UPDATE mysql.user SET Host='%' WHERE user='root' AND Host='localhost';
FLUSH PRIVILEGES;
authentication_string 与 caching_sha2_password,客户端兼容性问题会导致认证失败。解决:使用 ALTER USER ... IDENTIFIED WITH mysql_native_password BY 'pwd' 或升级客户端/启用 TLS。mysql.user 表结构不同。不要手动修改内部表,使用 CREATE/ALTER/GRANT/REVOKE。mysqld 配置(/etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf):# 允许所有网段(谨慎)
bind-address = 0.0.0.0
# 或仅监听指定网卡
# bind-address = 192.168.1.100
修改后重启 MySQL 服务:
# systemd 系统
sudo systemctl restart mysqld
# 或
sudo systemctl restart mysql
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
sudo ufw allow from 203.0.113.0/24 to any port 3306 proto tcp
%。require_secure_transport = ON 并配置证书)。ssh -L 3307:127.0.0.1:3306 [email protected]
# 然后本地连接 mysql -h 127.0.0.1 -P 3307 -u myuser -p
telnet host 3306 或 nc -vz host 3306。bind-address 是否限制为 127.0.0.1。SELECT User,Host,plugin FROM mysql.user;plugin 列)。/var/log/mysql/ 或 /var/log/mysqld.log)。caching_sha2_password。# 服务器上(以 root 或具有权限的用户登录 mysql)
-- 1. 创建受限远程用户
CREATE USER 'app_user'@'203.0.113.10' IDENTIFIED BY 'S-3cureP@ss!';
GRANT SELECT, INSERT, UPDATE ON prod_db.* TO 'app_user'@'203.0.113.10';
-- 2. 允许从某个子网
CREATE USER 'analytics'@'192.168.10.%' IDENTIFIED BY 'Another$tr0ng';
GRANT SELECT ON analytics_db.* TO 'analytics'@'192.168.10.%';
-- 3. 若遇到认证问题(MySQL8 客户端兼容性)
ALTER USER 'app_user'@'203.0.113.10' IDENTIFIED WITH mysql_native_password BY 'S-3cureP@ss!';
-- 4. 检查用户表(仅查询,不修改)
SELECT User,Host,plugin FROM mysql.user;
root@localhost 改为 %。风险太高。
518M · 2025-11-07
2.2G · 2025-11-07
2.03G · 2025-11-07