由于root权限过高,直接分享数据库root账号的密码,似乎有些不妥。所以我们需要添加一些账号,并进行一些权限的限制。本文主要介绍:1. 创建用户;2. 修改用户密码; 3. 设置权限。
我使用的是mysql8.0.16.0,它的用户操作相对mysql5.0有一些不同。
mysql图形工具使用的是SQLyog。
1. 用户表的基本信息
打开SQLyog,创建数据库连接,可以看见有一个叫mysql的数据库,里面保存了你的mysql的设置和信息,一般不要轻易变更。
打开该db里的user表格,可以看到你的root账户信息和权限设置。
密码在保存时进行过加密。
2. 用户的增删改(创建、删除、修改密码)
下列代码为mysql80的增删改,修改密码与5.0不同。
-- 使用mysql数据库 --
USE mysql;
-- 选择user表,查看用户信息 --
SELECT * FROM USER;
-- 增加guest用户,密码为 code --
-- 1. 本地可用 --
CREATE USER 'guest'@'localhost' IDENTIFIED BY 'code'
-- 2. @后的%为通配符,在其他地址也可使用 --
CREATE USER 'guest'@'%' IDENTIFIED BY 'code'
-- mysql80 修改密码 --
UPDATE USER SET authentication_string='' WHERE USER='guest';
ALTER USER 'guest'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
-- mysql5.0 修改密码 --
-- 1. --
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
-- 2. --
SET PASSWORD FOR '用户名'@'localhost' = PASSWORD('新密码');
-- 删除guest账号 --
DROP USER 'guest'@'localhost'
创建的用户如下所。
除了登陆功能外,没有任何权限。登陆后和root对比,会发现看不到其他表的信息。
登陆root账号,可以对新用户的权限进行设置。
3. 用户权限管理
(1)查看权限
查询显示没有任何权限。
-- 查询权限 --
SHOW GRANTS FOR 'guest'@'localhost';
(2)增加权限
-- 增加权限:GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; --
GRANT SELECT, DELETE, UPDATE ON test.account TO 'guest'@'localhost';
对guest添加test数据库account表的查、改、删操作。
修改权限后,用户guest可以看见test数据库的account表。
(3)撤销权限
撤销 删(DELETE)权限后,guest无法对表中的数据进行删除操作,只能进行查(SELECT)和改(UPDATE)。
-- 撤销权限:REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名'; --
REVOKE DELETE ON test.account TO 'guest'@'localhost';