175 位表示想打赏此文章

MySQL创建用户、赋权

一、查看数据库用户
二、创建数据库用户
三、修改数据库用户
四、删除数据库用户

五、查看用户权限
六、新增用户赋权
七、删除用户权限
八、刷新权限

一、查看数据库用户

SELECT user,host FROM mysql.user;

二、创建数据库用户

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

username代表登录的用户名;

localhost代表本机登录,不能在另外一台机器上远程登录。如果想远程登录的话,将”localhost”改为”%”,表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录

localhost与127.0.0.1是两种含义,若创建用户时使用localhost,则配置文件也应填写localhost。

三、修改数据库用户

方法一:
SET password for username@localhost = PASSWORD('newpassword'); 
方法二:
UPDATE user SET Password = PASSWORD('newpassword') WHERE user = 'username';
FLUSH PRIVILEGES;

这里只涉及修改密码,若想修改用户ip,则应通过新增用户、重新赋权来操作。
这里第一次接触到FLUSH PRIVILEGES,解释一下:方法二是直接操作表,权限、密码等并不会实时更新,因此需要使用FLUSH PRIVILEGES刷新权限。

四、删除数据库用户

DROP user username@localhost;
DROP user username@'%';

关于引号:实测了一下,对于localhost来说,是否有引号并不影响结果,而’%’则需要引号。

五、查看用户权限

SHOW GRANTS FOR 'username';
SHOW GRANTS FOR 'username'@'localhost';

六、新增用户赋权

GRANT all privileges on database.* to 'username'@'localhost'; 
GRANT select,insert,update,delete,create on database.* to 'username'@'localhost';
GRANT select on db.* to 'username'@'%' IDENTIFIED BY 'password'

all privileges:所有权限;
select:读取权限。
delete:删除权限。
update:更新权限。
create:创建权限。
drop:删除数据库、数据表权限。

dbName.tableName表示授予权限的具体库或表,常用的有以下几种选项:
.:授予该数据库服务器所有数据库的权限。
dbName.*:授予dbName数据库所有表的权限。
dbName.dbTable:授予数据库dbName中dbTable表的权限。

IDENTIFIED BY ‘password’:

grant all privileges on database.* to 'username'@'localhost' IDENTIFIED BY 'password';

七、删除用户权限

REVOKE ALL ON database.table FROM username@localhost;
REVOKE ALL PRIVILEGES ON *.* FROM username@localhost;
REVOKE insert,select,update,delete,drop,create,alter on database.table from username@'%';

revoke跟grant语法差不多,只需要把关键字 “to” 换成 “from” 即可

八、刷新权限

FLUSH PRIVILEGES;

使用insert、update等方式添加用户需要刷新缓存,flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mySQL库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,那么就需要执行这个命令。

发表评论

电子邮件地址不会被公开。 必填项已用*标注