我知道这命令:
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
其他回答
编辑文件:
/ etc / mysql / percona-server cnf。
在文件中附加以下代码。
(mysqld) Bind-address = 0.0.0.0
创建远程访问用户。
$ mysql -u root -p
mysql> GRANT ALL ON *.* to snippetbucketdotcom@'%' IDENTIFIED BY 'tejastank';
mysql> FLUSH PRIVILEGES;
mysql> exit
所有linux服务器工作,
对于MSWin c:\查找安装位置\文件路径
打开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
喜欢。)
我看到有很多答案,但除了公认的答案,它们都很长,很短,缺乏解释。由于我无法编辑,我正在添加我的答案。阿迪特问:
公开这个数据库,这样每个人都可以访问它
GRANT ALL PRIVILEGES
ON database.*
TO 'username'@'remote_host'
IDENTIFIED BY 'password';
上面的代码授予用户从一个给定的远程主机的权限,你可以允许一个用户从任何远程主机连接到MySQL通过更改'用户名'@'yourremotehost'到'用户名'@'%'。
因此,正确的查询授予用户从任何远程主机连接的权限是:
GRANT ALL PRIVILEGES
ON database.*
TO 'username'@'%'
IDENTIFIED BY 'password';
如果您希望从任何IP地址授予数据库的远程访问权限,请运行mysql命令,然后运行以下命令。
GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%'
IDENTIFIED BY 'password'
WITH GRANT OPTION;
对于那些搞砸了的人,这是我如何授予特权的,希望它能帮助到一些人
GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY
'yourRootPassword';
如前所述,%是一个通配符,这将允许任何IP地址连接到您的数据库。我在这里做的假设是,当您连接时,您将有一个名为root的用户(这是默认的)。输入根密码,就可以开始了。注意,在root用户周围没有单引号(')。