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.
......
.....
# 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
.....
......
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 .
3
使用此命令:
GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY 'yourRootPassword';
17 回答
%是一个通配符 - 如果需要,你也可以做
'%.domain.com'
或'%.123.123.123'
之类的东西 .启用远程访问(授权)主页/教程/ Mysql /启用远程访问(授权)如果您尝试从远程计算机连接到您的mysql服务器,并遇到如下错误,本文适合您 .
更改mysql配置
从编辑mysql配置文件开始
注释掉以下几行 .
如果您没有找到skip-networking line,请添加并注释掉它 .
重启mysql服务器 .
更改GRANT权限
您甚至可能会惊讶地看到,即使在上述更改后,您仍未获得远程访问权限或访问权限但无法访问所有数据库 .
默认情况下,允许使用的mysql用户名和密码在本地访问mysql-server . 所以需要更新权限 .
运行如下命令以从所有计算机访问 . (用您的凭据替换
USERNAME
和PASSWORD
. )运行如下命令以从特定IP进行访问 . (用您的凭据替换
USERNAME
和PASSWORD
. )您可以用您的IP替换1.2.3.4 . 您可以多次运行上述命令以从多个IP进行GRANT访问 .
您还可以为远程访问指定单独的
USERNAME
和PASSWORD
.您可以通过以下方式检查最终结
最后,您可能还需要运行:
测试连接
从终端/命令行:
如果你得到一个mysql shell,别忘了运行show databases;检查您是否拥有远程计算机的权限 .
奖金提示:撤销访问权限
如果您不小心授予用户访问权限,那么最好将撤销选项放在手边 .
以下将撤消所有计算机上USERNAME的所有选项:
如果在运行REVOKE命令后看到USAGE权限,则可以 . 它完全没有特权 . 我不确定它是否可以撤销 .
假设完成上述步骤并且可以远程访问MySql端口3306;不要忘记在mysql配置文件中绑定公共IP地址 .
例如在我的ubuntu服务器上:
在该文件中,搜索 [mysqld] section块并添加新的绑定地址,在此示例中为192.168.0.116 . 它看起来像这样
如果选择,您可以删除localhost(127.0.0.1)绑定,但是您必须专门提供IP地址才能访问本地计算机上的服务器 .
然后最后一步是重启MySql服务器(在ubuntu上)
或
#/etc/init.d/mysql restart
用于其他系统现在可以通过以下方式远程访问MySQL数据库:
对于任何弄乱这个的人来说,这就是我如何授予权限,希望它能帮到某个人
如上所述
%
是一个通配符,这将允许任何IP地址连接到您的数据库 . 我在这里做的假设就是当你连接时你会有一个名为root
的用户(虽然这是默认的) . 输入root密码,你就可以了 . 请注意,我在用户root周围没有单引号('
) .需要配置文件更改才能通过localhost启用连接 .
要通过远程IP连接,请以“root”用户身份登录并在mysql中运行以下查询 .
这将创建一个可在localhost和远程IP上访问的新用户 .
另请在/etc/mysql/my.cnf中的my.cnf文件中注释以下行
使用重启你的mysql
现在您应该能够远程连接到您的mysql .
使用此命令:
然后:
然后注释掉文件“/etc/mysql/mysql.conf.d/mysqld.cnf”中的以下行(是必需的!):
适合我! :-)
运行以下命令:
然后尝试从您指定的IP地址进行连接:
你应该能够连接 .
你可以通过this command来解决MariaDB的问题:
注意:
%
是一个通配符 . 在这种情况下,它指的是所有IP地址 .编辑文件:
/etc/mysql/percona-server.cnf
在文件中的代码下方追加 .
[mysqld] bind-address = 0.0.0.0
创建用于远程访问的用户 .
所有linux服务器都有效,
对于MSWin c:\查找insatallation location \ file path
使用admin用户启动MYSQL
mysql -u admin-user -p(输入PASSWORD ON PROMPT)
创建新用户:
CREATE USER 'newuser' @ '%' IDENTIFIED BY 'password'; (% - >任何主机)
授予权限:
GRANT SELECT,DELETE,INSERT,UPDATE ON db_name . * TO 'newuser' @ '%';
FLUSH PRIVILEGES;
如果您正在运行EC2实例,请不要忘记使用MYSQL / Aurura在安全组中添加入站规则 .
您需要更改mysql配置文件:
从编辑mysql配置文件开始
加:
只需将用户创建为某个数据库即可
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
更改为bind-address = 0.0.0.0
之后,您可以从任何IP连接到该数据库 .
打开
mysql console
并执行以下命令(输入您的数据库名称,用户名和密码):然后执行:
打开命令行并使用任何带有
root privileges
的编辑器打开文件/etc/mysql/mysql.conf.d/mysqld.cnf
.例如:
然后注释掉以下行:
使用命令重新启动mysql以反映更改:
请享用 ;)
在像cPanel这样的网站面板中,您可以在允许的主机名中添加一个
%
(百分号)来访问您的MySQL数据库 .通过添加单个
%
,您甚至可以从桌面应用程序访问任何IP或网站中的数据库 .例如在我的CentOS中
注释掉以下几行
然后
您可以通过编辑/etc/my.cnf来禁用所有安全性: