我知道这命令:

GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';

但它只允许我授予一个特定的IP地址来访问远程MySQL数据库。如果我想让任何远程主机都能访问这个MySQL数据库呢?我怎么做呢?基本上,我将这个数据库公开,这样每个人都可以访问它。


当前回答

要能够从任何IP地址连接到您的用户,请执行以下操作:

允许mysql服务器接受远程连接。打开mysqld.conf文件:

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

搜索以“bind-address”开头的行,并将其值设置为0.0.0.0

bind-address                    = 0.0.0.0

最后保存文件。

注意:如果你运行的是MySQL 8+,默认情况下bind-address指令不会出现在mysqld.cnf文件中。在这种情况下,将指令添加到文件/etc/mysql/mysql.conf.d/mysqld.cnf的底部。

现在重新启动mysql服务器,使用systemd或使用旧的service命令。这取决于你的操作系统:

sudo systemctl restart mysql # for ubuntu    
sudo systemctl restart mysqld.service # for debian

最后,mysql服务器现在可以接受远程连接了。

现在我们需要创建一个用户并授予它权限,这样我们就可以使用该用户远程登录。

以root用户或其他具有root权限的用户连接MySQL数据库。

mysql -u root -p

现在在localhost和'%'通配符中创建所需的用户,并授予所有DB的权限。

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

然后,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

最后,别忘了冲洗特权

FLUSH PRIVILEGES;

注意:如果你在你的数据库服务器上配置了防火墙,你还需要打开端口3306 MySQL的默认端口来允许流量到MySQL。

希望这对你有所帮助;)

其他回答

进入“/etc/mysql/mysql.conf”目录。d”然后 编辑mysqld.cnf文件

纳米mysqld.cnf美元

bind-address            = 127.0.0.1

mysqlx-bind-address     = 127.0.0.1

编辑,

bind-address            = 0.0.0.0

mysqlx-bind-address     = 0.0.0.0

适用于Ubuntu的是授予用户所有权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;

在/etc/mysql/mysql.conf.d/mysqld.cnf中设置绑定地址:

bind-address            = 0.0.0.0

然后重新启动mysql守护进程:

service mysql restart
TO 'user'@'%'

%是通配符-您也可以使用'%.domain。例如'或'%.123.123.123'之类的东西。

需要更改配置文件才能通过本地主机启用连接。

要通过远程ip连接,请以“root”用户登录并在mysql中运行以下查询。

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

这将创建一个在本地主机和远程ip上都可以访问的新用户。

还要注释位于/etc/mysql/my.cnf中的my.cnf文件中的下面一行

bind-address = 127.0.0.1

重新启动mysql

sudo service mysql restart

现在你应该可以远程连接到你的mysql了。

您可以通过编辑/etc/my.cnf来禁用所有安全:

skip-grant-tables