我在 ubuntu 虚拟服务器上运行了一个 mysql 服务器。
我想从主机访问数据库。(我已经可以从主机访问网站,所以我知道两者之间存在联系)。
我只更改了配置文件的一项内容。IP 地址。我已将其更改为 127.0.1.1,这是我用来从主机查看服务器网页的相同地址。
我遇到了两个问题。
首先
我无法从主机连接到mysql服务器。
第二个。
当我访问我的服务器终端时,我可以输入$mysql -u mysql
并得到 mysql 提示符。
从那里,我可以查看默认表“test”和“information_schema”。我甚至可以在数据库“test”上创建表,
但是当我尝试创建用户或创建数据库时,我收到以下错误。
1044 access denied for user ''@'localhost'
我不知道为什么它认为我的用户是''。
我以我的用户帐户登录到服务器。然后我以“mysql”的身份登录到 mysql 服务器(这正是它在配置文件中设置的内容)。此外,如果我尝试使用 mysqladmin,我会被告知我需要超级权限。我该如何设置这些?有什么想法为什么这不起作用?
答案1
运行 MySQL 的虚拟机有自己的 IP 地址,您必须使用该 IP 地址从主机访问 MySQL。
有两件事可能会造成阻碍。
首先,检查 MySQL 设置 - 您需要启用从外部 IP 地址的访问,而不仅仅是 127.0.0.1(仅在 VM 内部)。并且您需要确保您使用的任何 MySQL 用户都有权从主机的 IP 地址访问服务器 - MySQL 中的访问权限仅限于特定的源 IP 地址 - 尽管您可以使用通配符%
允许从任何地方访问。
其次,确保 Ubuntu 的 iptables 防火墙没有阻止对 MySQL 端口(默认为 3306)的入站访问。
至于您的其他问题。很可能是 MySQL 用户mysql
没有完全的管理员权限,因此不允许创建新的数据库。更改 MySQL 根用户(请注意,这些不是 Linux 用户,而是 MySQL 用户,完全不同),使其具有密码,然后尝试以根用户身份登录 MySQL 后创建数据库。
请注意,您通常不希望 MySQLroot
用户在本地机器之外可用 - 尽管对于测试服务器来说这是可以的。