首页 > 解决方案 > Windows 机器上的 MySQL Server 8.0,阻止名称解析

问题描述

我的服务器MySQL Server 8.0在 Windows 机器上。

我收到消息:

Access denied for user 'root'@'hostname.domain.co' (using password: YES)

而我使用IP连接到数据库。

我想阻止 MySQL 服务器执行名称解析。

我已经看到了选项skip-name-resolve

我不知道这是否是一个解决方案。

我尝试直接编辑C:\ProgramData\MySQL\MySQL Server 8.0\my.ini(即使它是只读的)。

但这并没有改变什么。

shell> mysqld --verbose --help

显示:

skip-name-resolve    FALSE

也许这必须使用mysql_config_editor.exe...进行设置

我也尝试在对话框--skip-name-resolveStart parameters编辑框中添加。Services -> MYSLQ80 Properties

它没有改变任何东西。

你能帮助我吗?

编辑 1

mysql> show global variables like 'skip%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| skip_external_locking | ON    |
| skip_name_resolve     | OFF   |
| skip_networking       | OFF   |
| skip_show_database    | OFF   |
+-----------------------+-------+

mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

编辑 2

我创建了文件C:\Program Files\MySQL\MySQL Server 8.0\my.ini 并将其放入其中:

[mysqld]
skip-name-resolve=ON

现在,如果我运行:

cmd.exe> mysqld --help --verbose

我可以看到该skip-name-resolve值已更改:

skip-name-resolve    TRUE

然而,我在尝试连接到服务器时仍然遇到错误:

C:\> mysql -u root -h W.X.Y.Z -p
Enter password: ****
ERROR 1045 (28000): Access denied for user 'root'@'hostname.domain.co' (using password: YES)

W.X.Y.Z运行 MySQL 服务器的机器的 IP 地址在哪里。

编辑 3

User在数据库的表中添加了一条记录mysql

CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM user WHERE Host = 'localhost' AND User='root';
UPDATE tmptable_1 SET Host = 'hostname.domain.co';
INSERT INTO user SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

这使我可以连接到服务器mysql -u root -h W.X.Y.Z -p

标签: mysqlconfigurationconfiguration-files

解决方案


推荐阅读