我知道这个命令:
GRANT ALL PRIVILEGES ON database.* TO 'user'@'yourremotehost' IDENTIFIED BY 'newpassword';
但是它只允许我授予一个特定的IP地址来访问这个远程MySQL数据库.如果我需要它以便任何远程主机可以访问此MySQL数据库怎么办?我怎么做?基本上我将这个数据库公开,所以每个人都可以访问它.
TO 'user'@'%'
%是一个通配符 - 如果需要,你也可以做'%.domain.com'
或者'%.123.123.123'
做类似的事情.
启用远程访问(授权)主页/教程/ Mysql /启用远程访问(授权)如果您尝试从远程计算机连接到您的mysql服务器,并遇到如下错误,本文适合您.
ERROR 1130(HY000):主机"1.2.3.4"不允许连接到此MySQL服务器
更改mysql配置
从编辑mysql配置文件开始
vim /etc/mysql/my.cnf
注释掉以下几行.
#bind-address = 127.0.0.1 #skip-networking
如果您没有找到skip-networking line,请添加并注释掉它.
重启mysql服务器.
~ /etc/init.d/mysql restart
更改GRANT权限
您甚至可能会惊讶地看到,即使在上述更改后,您仍未获得远程访问权限或访问权限但无法访问所有数据库.
默认情况下,允许使用的mysql用户名和密码在本地访问mysql-server.所以需要更新权限.
运行如下命令以从所有计算机访问.(替换USERNAME
并PASSWORD
凭证书.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
运行如下命令以从特定IP进行访问.(替换USERNAME
并PASSWORD
凭证书.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
您可以用您的IP替换1.2.3.4.您可以多次运行上述命令以从多个IP进行GRANT访问.
您还可以指定单独的USERNAME
&PASSWORD
进行远程访问.
您可以通过以下方式检查最终结
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权限,则可以.它完全没有特权.我不确定它是否可以撤销.
假设完成上述步骤并且可以远程访问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 restart
其他系统
现在可以通过以下方式远程访问MySQL数据库:
mysql -u username -h 192.168.0.116 -p
对于任何弄乱这个的人来说,这就是我如何授予权限,希望它能帮到某个人
GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY 'yourRootPassword';
如上所述%
是通配符,这将允许任何IP地址连接到您的数据库.我在这里做的假设就是当你连接时你会有一个名为的用户root
(虽然这是默认的).输入root密码,你就可以了.请注意,我'
在用户root周围没有单引号().
需要配置文件更改才能通过localhost启用连接.
要通过远程IP连接,请以"root"用户身份登录并在mysql中运行以下查询.
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION; CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
这将创建一个可在localhost和远程IP上访问的新用户.
另请在/etc/mysql/my.cnf中的my.cnf文件中注释以下行
bind-address = 127.0.0.1
使用重启你的mysql
sudo service mysql restart
现在您应该能够远程连接到您的mysql.
使用此命令:
GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY 'yourRootPassword';
然后:
FLUSH PRIVILEGES;
然后注释掉文件"/etc/mysql/mysql.conf.d/mysqld.cnf"中的以下行(是必需的!):
bind-address = 127.0.0.1
适合我!
运行以下命令:
$ 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
你应该能够连接.
您可以通过此命令解决MariaDB的问题:
注意:GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'mysql root password';
%
是一个通配符.在这种情况下,它指的是所有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
最后保存文件。
现在,使用systemd
或使用旧service
命令重新启动mysql服务器。这取决于您的操作系统:
sudo systemctl restart mysqld.service
最后,mysql服务器现在可以接受远程连接。
现在,我们需要创建一个用户并为其授予权限,这样我们就可以使用该用户远程登录。
以root或具有root特权的任何其他用户连接到MySQL数据库。
mysql -u root -p
现在,在localhost和'%'通配符中都创建所需的用户,并按原样授予所有数据库的权限。
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;
希望这可以帮助 ;)
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'
要远程访问数据库Mysql服务器8:
CREATE USER 'root'@'%' IDENTIFIED BY 'Pswword@123'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
使用管理员用户启动MYSQL
mysql -u admin-user -p(在提示时输入密码)
创建一个新用户:
创建用户'newuser'@'%'由'密码'标识;(%-> anyhost)
授予特权:
对db_name进行GRANT SELECT,DELETE,INSERT,UPDATE。*到'newuser'@'%';;
冲洗特权;
如果您正在运行EC2实例,请不要忘记使用MYSQL / Aurura在安全组中添加入站规则。
/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