远程访问linux的mysql数据库_创建用户及授予权限

本文记录了在ubuntu 18.04版本下配置远程访问mysql,创建用户及授权限。
mysql安装完后默认只能通过本地连接,进行远程访问需要如下配置:

一、修改配置文件,设置允许连接的IP

输入命令:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

修改mysql的配置文件(不同版本的mysql可能配置文件不同,如果这个路径找不到配置文件可以尝试使用 /etc/mysql/my.cnf 这个路径),在下图所示的“bind-address=127.0.0.1”前加上“#”号注释掉,表示允许所有的IP连接:
远程访问linux的mysql数据库_创建用户及授予权限
修改完成后执行以下命令重启mysql服务:

service mysql restart

二、创建用户

在控制台输入命令: mysql
回车进入mysql的控制台。
创建用户命令:

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

username:你将创建的用户名;
%:指定该用户在哪个主机上可以登录,%表示该用户可以从任意远程主机登录,如果是本地用户可用localhost;
password:该用户的登录密码,密码可以为空,如果为空则该用户可以不需要密码登录服务器。
例如:

CREATE USER 'shujie'@'%' IDENTIFIED BY 'a';

表示创建一个名为shujie的用户,可以从任意远程主机连接,密码为a。

查看所有的用户:

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 
或 
select distinct concat(user,'''@''',host,''';') FROM mysql.user;

三、授予用户权限

命令:

GRANT privileges ON databasename.tablename TO 'username'@'localhost';

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所有的权限则使用ALL;
databasename:数据库名,如果要授予该用户对所有数据库的操作权限则可用 * 表示;
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示。
例如:

GRANT ALL ON *.* TO 'root'@'%';
GRANT ALL ON flight.* TO 'shujie'@'%';

第一个命令表示授予root用户对全部数据库的所有操作,第二个命令表示授予shujie用户对flight数据库的全部表的所有操作。
这里推荐创建一个root用户并授予全部权限,但是这个用户只留给自己用,方便远程连接来管理自己所有的数据库。

查看该用户的权限:

show grants for shujie;

四、撤销用户权限

命令:

REVOKE privilege ON databasename.tablename FROM 'username'@'%';

例如:

REVOKE ALL ON flight.* FROM 'shujie'@'%';

五、删除用户

命令:

DROP USER 'username'@'%';

六、更改用户密码

命令:

SET PASSWORD FOR 'username'@'localhost' = PASSWORD('newpassword');

例如把前面创建的shujie用户密码改为aa

SET PASSWORD FOR 'shujie'@'%' = PASSWORD('aa');

到这里就全部完成了,在工作中如果有需要把mysql数据库提供给别人的时候,就可以创建出一个用户,只允许访问部分数据库,这样相对于把全部数据库都交给别人来说就安全得多了。