我知道这命令:
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数据库呢?我怎么做呢?基本上,我将这个数据库公开,这样每个人都可以访问它。
当前回答
您可以通过编辑/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
只要创建一个用户到某个数据库
授予<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连接到该数据库。
要能够从任何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。
希望这对你有所帮助;)
使用该命令:
GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY 'yourRootPassword';
然后:
FLUSH PRIVILEGES;
然后注释掉文件"/etc/mysql/mysql.conf.d/mysql .cnf"(这是必须的!)
bind-address = 127.0.0.1
对我有用!
如果您希望从任何IP地址授予数据库的远程访问权限,请运行mysql命令,然后运行以下命令。
GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%'
IDENTIFIED BY 'password'
WITH GRANT OPTION;