我知道这命令:

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

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


当前回答

比如我的CentOS

sudo gedit /etc/mysql/my.cnf

注释掉下面的行

#bind-address = 127.0.0.1

然后

Sudo服务mysqld重启

其他回答

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

skip-grant-tables

假设以上步骤已经完成,MySql端口3306可以远程访问;不要忘记在mysql配置文件中绑定公网ip地址。

例如在我的ubuntu服务器上:

#nano /etc/mysql/my.cnf

在文件中,搜索[mysqld]区域块并添加新的绑定地址,在本例中为192.168.0.116。它看起来是这样的

......    
.....    
# 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    
bind-address        = 192.168.0.116

.....    
......

如果你愿意,你可以删除localhost(127.0.0.1)绑定,但是你必须明确地给出一个IP地址来访问本地机器上的服务器。

最后一步是重新启动MySql服务器 在ubuntu ()

stop mysql

start mysql

或# / etc / init。D /mysql重启其他系统

现在MySQL数据库可以通过以下方式远程访问:

mysql -u username -h 192.168.0.116 -p

打开mysql控制台,执行以下命令(输入数据库名、用户名和密码):

GRANT ALL ON yourdatabasename。到管理员@“%” “yourRootPassword”;

然后执行:

冲洗特权;

打开命令行,使用任何具有root权限的编辑器打开/etc/mysql/mysql.conf.d/mysqld.cnf文件。

例如:

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

然后注释掉下面这行:

Bind-address = 127.0.0.1

使用命令重新启动mysql以反映更改:

sudo service mysql restart

喜欢。)

使用admin用户启动MYSQL mysql -u admin-user -p (PASSWORD ON PROMPT) 创建新用户: 创建用户“newuser”@“%”(% -> anyhost) 授予特权: 对db_name授权SELECT,DELETE,INSERT,UPDATE。*到'newuser'@'%'; 冲洗特权;

如果您正在运行EC2实例,不要忘记在MYSQL/Aurura安全组中添加入站规则。

执行如下命令:

$ mysql -u root -p      
mysql> GRANT ALL ON *.* to root@'ipaddress' IDENTIFIED BY 'mysql root password';     
mysql> FLUSH PRIVILEGES;     
mysql> exit

然后尝试从您指定的IP地址进行连接:

mysql -h address-of-remove-server -u root -p   

你应该能够连接。