我知道这个命令:
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';
但是它只允许我授予一个特定的IP地址来访问这个远程MySQL数据库。如果我需要它以便任何远程主机可以访问此MySQL数据库怎么办?我怎么做?基本上我将这个数据库公开,所以每个人都可以访问它。
TO 'user'@'%'
%是一个通配符 - 如果需要,你也可以做'%.domain.com'
或'%.123.123.123'
等。
/etc/MySQL/普洱茶哦那-server.采暖费
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'
[mysqld]
bind-address = 0.0.0.0
如果您正在运行EC2实例,请不要忘记使用MYSQL / Aurura在安全组中添加入站规则。
要远程访问数据库Mysql服务器8:
$ mysql -u root -p
mysql> GRANT ALL ON *.* to snippetbucketdotcom@'%' IDENTIFIED BY 'tejastank';
mysql> FLUSH PRIVILEGES;
mysql> exit
要能够从任何IP地址与您的用户建立连接,请执行以下操作:
允许mysql服务器接受远程连接。对于这个打开的mysqld.conf文件:
CREATE USER 'root'@'%' IDENTIFIED BY 'Pswword@123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
搜索以“bind-address”开头的行,并将其值设置为0.0.0.0
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
最后保存文件。
现在重新启动mysql服务器,使用bind-address = 0.0.0.0
或使用较旧的systemd
命令。这取决于您的操作系统:
service
最后,mysql服务器现在能够接受远程连接。
现在我们需要创建一个用户并授予其权限,这样我们就可以远程登录该用户。
以root身份或具有root权限的任何其他用户连接到MySQL数据库。
sudo systemctl restart mysqld.service
现在在localhost和'%'通配符中创建所需的用户,并为所有数据库授予权限。
mysql -u root -p
然后,
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 <database_name>.* TO '<username>'@'%' IDENTIFIED BY '<password>'
并将线路sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
改为bind-address = 127.0.0.1
之后,您可以从任何IP连接到该数据库。
打开bind-address = 0.0.0.0
并执行以下命令(输入您的数据库名称,用户名和密码):
全部授予您的数据库名称。*管理员@'%'通过'yourRootPassword'识别;
然后执行:
FLUSH特权;
打开命令行并使用mysql console
的任何编辑器打开文件/etc/mysql/mysql.conf.d/mysqld.cnf
。
例如:
root privileges
然后注释掉以下行:
bind-address = 127.0.0.1
使用命令重新启动mysql以反映更改:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
请享用 ;)
您需要更改mysql配置文件:
从编辑mysql配置文件开始
sudo service mysql restart
加:
vim /etc/mysql/my.cnf
在像cPanel这样的网站面板中,您可以在允许的主机名中添加一个bind-address = 0.0.0.0
(百分号)来访问您的MySQL数据库。
通过添加单个%
,您甚至可以从桌面应用程序访问任何IP或网站上的数据库。
例如在我的CentOS中
sudo gedit /etc/mysql/my.cnf
注释掉以下几行
#bind-address = 127.0.0.1
然后
sudo service mysqld restart
如果要从任何IP地址授予对数据库的远程访问权限,请运行mysql命令,然后运行以下命令。
%
启用远程访问(授权)主页/教程/ 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权限,则可以。它完全没有特权。我不确定它是否可以撤销。
在Ubuntu上工作的是向用户授予所有权限:
GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%'
IDENTIFIED BY 'password'
WITH GRANT OPTION;
并在GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
中设置绑定地址:
/etc/mysql/mysql.conf.d/mysqld.cnf
然后重启mysql守护进程:
bind-address = 0.0.0.0
您可以通过编辑/etc/my.cnf来禁用所有安全性:
service mysql restart
假设完成上述步骤并且可以远程访问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
你应该能够连接。
你可以通过qazxsw poi解决MariaDB的问题:
this command
GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'mysql root password';
是一张通配符。在这种情况下,它指的是所有IP地址。
%