我知道这命令:

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

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


当前回答

执行如下命令:

$ 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   

你应该能够连接。

其他回答

只要创建一个用户到某个数据库

授予<database_name>的所有权限。* TO '<用户名>'@'%' IDENTIFIED BY '<密码>'

然后转到

执行nano /etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address = 127.0.0.1修改为bind-address = 0.0.0.0

之后,您可以从任何IP连接到该数据库。

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

skip-grant-tables

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

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

使用该命令:

GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY 'yourRootPassword';

然后:

FLUSH PRIVILEGES; 

然后注释掉文件"/etc/mysql/mysql.conf.d/mysql .cnf"(这是必须的!)

bind-address = 127.0.0.1 

对我有用!

我看到有很多答案,但除了公认的答案,它们都很长,很短,缺乏解释。由于我无法编辑,我正在添加我的答案。阿迪特问:

公开这个数据库,这样每个人都可以访问它

GRANT ALL PRIVILEGES
ON database.*
TO 'username'@'remote_host'
IDENTIFIED BY 'password';

上面的代码授予用户从一个给定的远程主机的权限,你可以允许一个用户从任何远程主机连接到MySQL通过更改'用户名'@'yourremotehost'到'用户名'@'%'。

因此,正确的查询授予用户从任何远程主机连接的权限是:

GRANT ALL PRIVILEGES
ON database.*
TO 'username'@'%'
IDENTIFIED BY 'password';