我尝试使用主机地址作为我的 IP 地址 203.199.209.** 连接我的数据库,但无法连接数据库。如果我尝试使用主机地址作为 localhost 连接我的数据库,它连接成功。如何解决这个问题?
2 回答
MySQL 根据您连接的主机授予访问权限。
运行此命令root
:
SELECT user, host FROM mysql.user;
这些是您服务器上存在的用户。注意host
列。
简而言之,用户被定义为用户名 ( user
)和连接点 ( host
)。当您以 身份访问服务器时localhost
,实际上是以 身份登录some_user@localhost
。另一方面,当您通过其 IP 地址访问服务器时,您实际上是以some_user@your.ip.address.here
. 我猜后者在您的服务器上不存在。
您可能想要创建一个新用户,例如some_user@your.ip.address.here
or some_user@%
(百分号是通配符;这里的意思是“任何主机”):
CREATE USER 'some_user'@'your.ip.address.here' IDENTIFIED BY 'your_password';
GRANT ALL ON your_database.* to 'some_user'@'your.ip.address.here';
如果您想进一步了解,请参阅此手册页以获取有关 MySQL 访问控制的更多详细信息,以及此页面以了解CREATE USER
语法。
[编辑]
显然,正如其他人所建议的,您首先需要确保您的服务器侦听此 IP 地址(203.199.209.**)。但如果不是这种情况,您应该会收到以下错误:
错误 2003 (HY000):无法连接到“203.199.209.**”上的 MySQL 服务器 (111)
您收到的错误肯定表明存在权限问题。
对于 mysql-5.7.15-winx64(Windows 版本),以“root”用户身份登录并在 MYSQL 中运行以下查询:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
然后重新启动您的 MYSQL DB。
对于此版本的 MYSQL DB,无需更改与“bin”文件夹位于同一位置的“my-default.ini”。