🚨 错误原因:1045 - Access denied for user ‘kong’@‘kong.lan’ (using password: YES)
该错误表明 ProxySQL 拒绝了您使用 kong 用户的连接请求。这通常是由于 用户认证配置不正确 或 用户权限不足 导致的。
🔧 解决方案 1:在 ProxySQL 中添加用户
1️⃣ 连接到 ProxySQL 管理接口
在 WSL Ubuntu 中执行以下命令,连接到 ProxySQL 管理接口:
mysql -u admin -p -h 127.0.0.1 -P 6032
2️⃣ 添加 kong 用户
在 ProxySQL 管理界面执行以下 SQL 语句:
INSERT INTO mysql_users (username, password, default_hostgroup)
VALUES ('kong', 'your_password', 10);
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
username:kong(您要使用的用户名)password:your_password(您要使用的密码)default_hostgroup:10(表示写操作路由到主库)
3️⃣ 验证用户是否已添加
执行以下查询,确认用户是否已添加成功:
SELECT username, default_hostgroup FROM mysql_users;
🔧 解决方案 2:确保 MySQL 主库和从库上也有该用户
除了在 ProxySQL 中添加用户,您还需要确保在 MySQL 主库 和 从库 上也存在相同的用户。
1️⃣ 登录 MySQL 主库
mysql -u root -p
2️⃣ 创建 kong 用户
执行以下 SQL:
CREATE USER 'kong'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'kong'@'%';
FLUSH PRIVILEGES;
3️⃣ 验证用户是否生效
执行以下查询:
SELECT user, host FROM mysql.user;
确保 kong 用户 已被正确创建。
🔧 解决方案 3:修改 ProxySQL 的 Hostname 验证
默认情况下,ProxySQL 会验证用户的 hostname。如果您在 Navicat 中使用的 IP 地址或主机名与 ProxySQL 中的配置不匹配,也会导致 1045 错误。
修改 ProxySQL 的用户配置
在 ProxySQL 管理界面执行以下 SQL:
UPDATE mysql_users SET frontend = 1 WHERE username='kong';
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
🔧 解决方案 4:检查防火墙和端口配置
确保 6033 端口 已开放,且没有被防火墙阻止:
检查端口监听状态
sudo netstat -tuln | grep 6033
✅ 总结
| 步骤 | 描述 |
|---|---|
| 添加用户 | 在 ProxySQL 中添加 kong 用户 |
| 配置 MySQL 主库/从库 | 在 MySQL 主库和从库上创建用户 |
| 验证用户配置 | 确认用户已正确加载到 ProxySQL |
| 修改 hostname 验证 | 修改用户的 hostname 验证策略 |
| 检查端口监听状态 | 确认 ProxySQL 的 6033 端口已开放 |
454



被折叠的 条评论
为什么被折叠?



