在mysql中,是由对应的host与user共同组成主键来区分用户。
user:代表用户名
host:主机名。如果host使用 * 代表所有用户都可以访问。
创建用户
直接使用root用户在mysql.user表中插入记录(不推荐)
专门创建用户的sql指令
基本语法:create user 用户名 identified by ‘明文密码’;
用户:用户名@主机地址
主机地址:‘’ or ‘%’
删除用户
基本语法:drop user 用户名@host;
修改用户密码
mysql中提供多种修改的方式:基本上都必须使用对应提供的一个系统函数:password(),需要靠改函数对密码进行加密处理。
使用专门的修改密码指令
基本语法:set password for 用户@主机 = password(‘新的明文密码’);
set password for root@localhost = password('root');
权限管理
数据权限:增删改查(insert/delete/update/select)
结构权限:结构操作(create/drop)
管理权限:权限管理(create user/grant/revoke):通常只给管理员此权限
-
授予权限(root用户才能授予权限):grant 基本语法:grant 权限列表 on 数据库/.表名/ to 用户;
权限列表:使用逗号分隔,但是可以使用all privileges代表全部权限
数据库.表名:可以是单标(数据库名字.表名),可以是具体某个数据库(数据库.*),也可以整库(*.*) 不需要刷新grant select on my_db.my_table to 'user1'@'%';
-
取消权限(root用户才能取消权限):revoke 基本语法:revoke 权限列表 on 数据库/.表名/ to 用户;
权限列表:使用逗号分隔,但是可以使用all privileges代表全部权限
数据库.表名:可以是单标(数据库名字.表名),可以是具体某个数据库(数据库.*),也可以整库(*.*) 不需要刷新
revoke select on my_db.my_table to 'user1'@'%';
- 刷新权限:flush flush:刷新,将当前用户的权限操作,进行刷新,将操作的具体内容同步到具体的表中 基本语法:flush
privileges;
解决root密码丢失
- 停止服务:cmd中使用命令 net stop mysql
- 重启服务:cmd中使用命令 mysqld.exe --skip-grant-tables //启动服务器但是跳过权限
当光标闪烁时表示服务端启动成功 - 当前启动的服务端没有权限概念:非常危险,任何客服端,不需要任何用户信息都可以直接登录,而且是root权限;
- 新开客户端,使用mysql.exe登录即可重置密码
- 关闭服务器(首先关闭光标闪烁的命令窗口,然后在任务管理器中找到mysqld.exe,结束这个进程),重启mysql服务器