在MySQL中启用了本地主机连接。
但是远程(我的笔记本电脑)无法访问
Can't connect to MySQL server on "host" (10061)`.
我的端口始终打开3306。
这是我的配置文件(/etc/mysql/my.cnf
):
#bind-address 0.0.0.0
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
并且MySQL状态为:
mysql start/running, process 15204
要允许远程访问MySQL,您必须在配置文件中注释掉绑定地址(您已这样做)并跳过网络。
接下来,您必须确保允许用户远程访问。使用以下方法检查您的用户:
SELECT User, Host FROM mysql.user;
如果您的用户在此处将'127.0.0.1'或'localhost'列为主机,则您没有远程访问权限。
更改为:
UPDATE mysql.user SET HOST='%' WHERE User='__here_your_username';
刷新权限:
FLUSH PRIVILEGES;
'%'是'所有主机'的通配符。
为了允许远程访问安装在Ubuntu上的MySQL,您必须在以下位置访问文件:
/etc/mysql/mysql.conf.d/mysqld.cnf
在那里,您注释掉以下行:bind-address = 127.0.0.1
基本上要更改:绑定地址= 127.0.0.1到:#bind-address = 127.0.0.1
现在,您可以使用以下命令重新启动计算机或仅重新启动mySQL服务:sudo /etc/init.d/mysql restart
就我而言,在Ubuntu 18.04的Oracle VM上安装了LAMP堆栈
这是我对mysql配置文件的更新:/etc/mysql/mysql.conf.d/mysqld.cnf
之前:
bind-address = 127.0.0.1
之后:
# bind-address = 127.0.0.1
# comment out bind-address to test remote access
确保您的用户可以从远程主机访问须藤mysql -u root -p输入密码,然后发出命令
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+ ------------------ + ---------------------------- --------------- + ----------------------- + ---------- ---- +|用户| authentication_string |插件|主机|+ ------------------ + ------------------------------ ------------- + ----------------------- + ------------ -+
|新用户| * 9ACA980716AE084BCA56C59D19F3CEB7BB87B139 | mysql_native_password | 192.168.x.x ||新用户| * 9ACA980716AE084BCA56C59D19F3CEB7BB87B139 | mysql_native_password |本地主机|
这对我有用,祝你好运。
对于在Raspberry Pi 3上托管MySQL的其他人,您要查找的文件位于
etc/mysql/mariadb.conf.d/50-server.cnf
尽管通过注释掉,您仍然需要遵循上面列出的先前步骤
bind-address = 127.0.0.1
希望这可以帮助其他人花费与我一样多的时间来弥补似乎缺失的线。
以下内容对我有用。
SELECT User, Host FROM mysql.user;
UPDATE mysql.user SET HOST='%' WHERE User='root';
UPDATE mysql.user SET HOST='%' WHERE User='administrator';
FLUSH PRIVILEGES;
然后,
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
更改
bind-address = 127.0.0.1 to: #bind-address = 127.0.0.1
保存文件。重新启动服务器/重新启动MySQL