我知道这命令:
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';
但它只允许我授予一个特定的IP地址来访问远程MySQL数据库。如果我想让任何远程主机都能访问这个MySQL数据库呢?我怎么做呢?基本上,我将这个数据库公开,这样每个人都可以访问它。
我知道这命令:
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';
但它只允许我授予一个特定的IP地址来访问远程MySQL数据库。如果我想让任何远程主机都能访问这个MySQL数据库呢?我怎么做呢?基本上,我将这个数据库公开,这样每个人都可以访问它。
当前回答
假设以上步骤已经完成,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的配置文件:
开始编辑mysql配置文件
vim /etc/mysql/my.cnf
add:
bind-address = 0.0.0.0
在像cPanel这样的网站面板中,您可以在允许访问MySQL数据库的主机名中添加一个%(百分比符号)。
通过添加单个%,您可以从任何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安全组中添加入站规则。
适用于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