本地主机与 127.0.0.1:MySQL 权限的奇怪案例
使用 MySQL 时,经常会遇到看似令人困惑的差异术语“localhost”和“127.0.0.1”之间。这种差异体现在向数据库系统内的用户授予权限的上下文中。
为了说明这一点,请考虑以下示例:
$ mysql -u root -h 127.0.0.1 -e 'show tables' created_from_host; +-----------------------------+ | Tables_in_created_from_host | +-----------------------------+ | test | +-----------------------------+ $ mysql -u root -h localhost -e 'show tables' created_from_host; ERROR 1049 (42000): Unknown database 'created_from_host'
出现这种差异是因为 MySQL 区分使用主机名(例如“localhost”)和通过套接字建立的连接(例如“127.0.0.1”)。套接字方法在未指定主机名或与“localhost”连接时使用,利用本地套接字与数据库服务器进行通信。
这种区别在用户权限领域变得很重要。以下是向“root”的所有主机的所有数据库授予所有权限的简单指南:
使用 root 帐户连接到 MySQL:
$ mysql -u root -p
执行以下命令授予权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新权限以确保更改生效:
FLUSH PRIVILEGES;
通过执行以下步骤,您可以确保“root”将可以从任何主机无限制地访问您的数据库系统,无论它是通过“localhost”还是通过“localhost”连接'127.0.0.1'.
以上是为什么 MySQL 在授予权限时对 `localhost` 和 `127.0.0.1` 的处理方式不同?的详细内容。更多信息请关注PHP中文网其他相关文章!