我似乎无法远程访问在 Google Cloud/Compute 实例上运行的 Mysql。我正在尝试进行普通安装。
我使用默认的 Debian 创建了实例。
我使用 apt-get 安装 mysql,奇怪的是,它安装的却是 MariaDB。很好。
我运行了 sudo mysql mysql_secure_installation 并按照提示操作。奇怪的是,它留下了“root”的 mysql.users 行,其插件列值为“unix_socket”,这只允许使用 sudo 进行本地访问。好的。我将添加一个新用户。
我在本地登录并运行:
创建用户“myname”@“%”,标识为“mypass”;
授予'mypass'@'%' 对 *.* 的所有权限;
刷新权限;
我可以使用本地主机的“myname”进行连接。
我在 Google Cloud 防火墙上为 0.0.0.0/0 上的 3306 端口打开了一个漏洞。我知道我做得对,因为我为 8088 端口创建了一条相同的规则,我可以很好地与该端口进行远程通信。
当我尝试从远程机器连接到 mysql 时,出现“无法连接到远程主机:连接被拒绝”的信息。
这可能是网络问题,也可能是 mysql 问题,我不知道是哪个问题。有什么想法吗?
答案1
搞清楚了。在配置文件的深处,/etc/mysql/maria.conf.d/50-server.cnf,有这样几行令人难以置信的代码:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
注释掉绑定地址并且它起作用。
这这是 Debian 在您要求使用 MySql 时安装 MariaDB 的糟糕决定造成的结果。有一系列复杂的配置文件,交替命名为 mysql* 和 mariadb*,但没有一个能完成它们声称要做的事情。