我知道这命令:
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数据库呢?我怎么做呢?基本上,我将这个数据库公开,这样每个人都可以访问它。
当前回答
启用远程访问(授权) Home /教程/ Mysql /启用远程访问(授权) 如果你试图从远程机器连接到你的mysql服务器,并遇到如下错误,这篇文章是为你准备的。
错误1130 (HY000):主机' 1.2.3.4 '不允许连接到这个 MySQL服务器
修改mysql配置
开始编辑mysql配置文件
vim /etc/mysql/my.cnf
注释掉下面的行。
#bind-address = 127.0.0.1
#skip-networking
如果您没有找到跳网线,添加它并注释掉它。
重启mysql服务器。
~ /etc/init.d/mysql restart
变更GRANT特权
您可能会惊讶地发现,即使经过上述更改,您也无法获得远程访问权限,或者获得访问权限但无法访问所有数据库。
默认情况下,您所使用的mysql用户名和密码可以在本地访问mysql-server。所以需要更新权限。(如果你想创建一个单独的用户,你可以使用create user 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD';)
运行如下命令从所有机器进行访问。(替换用户名和密码为您的凭证。)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
运行如下所示的命令从特定的IP提供访问。(替换用户名和密码为您的凭证。)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
您可以将1.2.3.4替换为您的IP。可以多次执行以上命令授予多个ip的访问权限。
您也可以为远程访问指定一个单独的用户名和密码。
你可以通过以下方法查看最终结果:
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
最后,你可能还需要运行:
mysql> FLUSH PRIVILEGES;
测试连接
从终端/命令行:
mysql -h HOST -u USERNAME -pPASSWORD
如果你得到一个mysql shell,不要忘记执行show databases;检查您是否拥有来自远程机器的正确权限。
奖励-提示:撤销访问权限
如果您不小心授予用户访问权限,那么最好有一个撤销选项。
以下将撤销所有机器的USERNAME选项:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.
如果运行REVOKE命令后看到USAGE privilege,则没有问题。这就等于没有任何特权。我不确定是否可以撤销。
其他回答
打开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
喜欢。)
进入“/etc/mysql/mysql.conf”目录。d”然后 编辑mysqld.cnf文件
纳米mysqld.cnf美元
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
编辑,
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
启用远程访问(授权) Home /教程/ Mysql /启用远程访问(授权) 如果你试图从远程机器连接到你的mysql服务器,并遇到如下错误,这篇文章是为你准备的。
错误1130 (HY000):主机' 1.2.3.4 '不允许连接到这个 MySQL服务器
修改mysql配置
开始编辑mysql配置文件
vim /etc/mysql/my.cnf
注释掉下面的行。
#bind-address = 127.0.0.1
#skip-networking
如果您没有找到跳网线,添加它并注释掉它。
重启mysql服务器。
~ /etc/init.d/mysql restart
变更GRANT特权
您可能会惊讶地发现,即使经过上述更改,您也无法获得远程访问权限,或者获得访问权限但无法访问所有数据库。
默认情况下,您所使用的mysql用户名和密码可以在本地访问mysql-server。所以需要更新权限。(如果你想创建一个单独的用户,你可以使用create user 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD';)
运行如下命令从所有机器进行访问。(替换用户名和密码为您的凭证。)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
运行如下所示的命令从特定的IP提供访问。(替换用户名和密码为您的凭证。)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
您可以将1.2.3.4替换为您的IP。可以多次执行以上命令授予多个ip的访问权限。
您也可以为远程访问指定一个单独的用户名和密码。
你可以通过以下方法查看最终结果:
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
最后,你可能还需要运行:
mysql> FLUSH PRIVILEGES;
测试连接
从终端/命令行:
mysql -h HOST -u USERNAME -pPASSWORD
如果你得到一个mysql shell,不要忘记执行show databases;检查您是否拥有来自远程机器的正确权限。
奖励-提示:撤销访问权限
如果您不小心授予用户访问权限,那么最好有一个撤销选项。
以下将撤销所有机器的USERNAME选项:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.
如果运行REVOKE命令后看到USAGE privilege,则没有问题。这就等于没有任何特权。我不确定是否可以撤销。
假设以上步骤已经完成,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
使用该命令:
GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY 'yourRootPassword';
然后:
FLUSH PRIVILEGES;
然后注释掉文件"/etc/mysql/mysql.conf.d/mysql .cnf"(这是必须的!)
bind-address = 127.0.0.1
对我有用!