用户权限管理:在不同的项目中给不同的角色(mysql客户端用户,通常为开发者)不同的权限,为了保证数据库的数据安全。
mysql需要客户端进行连接认证才能进行服务器操作:需要用户信息。mysql中所有的用户(指mysql客户端用户)信息都是保存在mysql数据库下的user表中。该表采用复合主键(host + user)。
注意:\g 的作用是分号和在sql语句中写’;’是等效的
\G 的作用是将查到的结构旋转90度变成纵向
方式一:直接使用root用户在user表中插入记录。(不推荐)
方式二:使用SQL指令创建用户
create user '用户名'@'主机地址' identified by '明文密码';
create user 用户名; //创建 谁都可以访问,不需要密码 的用户
注意:主机地址可以使用'%'或者''代替,表示无限制。
drop user '用户名'@'主机地址';
drop user 用户名; //删除主机地址为'' 或者 '%' 的用户
mysql中提供了多种修改密码的方式,基本上都必须使用对应提供的一个系统函数:password()。需要靠该函数对密码进行加密处理。
方式一:使用专门的SQL指令来修改密码
set password for 用户名 = password('新的明文密码');
方式二:使用更新语句update来修改表
update mysql.user set password = password('新的明文密码') where user = '用户名' and host='主机地址';
mysql中将权限分3类:数据权限、结构权限、管理权限
数据权限:增删改查(select/update/delete/insert)
结构权限:结构操作(create/drop)
管理权限:用户操作权限(create user/grant/revoke)
将权限分配给指定用户
grant 权限列表/all privileges on 数据库.表名 to 用户;
注:1、权限列表:使用逗号分隔,但是可以使用 all privileges(表示全部权限)。
2、数据库.表名:可以是单表(数据库名.表名)、可以是某个数据库(数据库名.*)、可以是整库(*.*)
revoke 权限列表/all privileges on 数据库.表名 from 用户;
将当前对用户的权限操作,进行一个刷新,将操作的具体内容同步到对应的表中。
flush privileges;
普通用户密码丢失可以通过root账号修改。但是如果忘记root用户密码,就需要去找回或者重置root用户密码。
1、停止服务
net stop mysql
2、重启服务器,但是跳过权限
mysqld.exe --skip-grant-tables
注:当前启动的服务器没有权限概念。即任何客户端,不需要任何用户信息都可以直接登录,而且是root权限(新开客户端,直接使mysql登录即可)。
3、修改root用户密码,需要指定用户名。
4、进程中关闭mysql服务器(命令行关闭服务器有可能会失效),然后正常重启即可。