DCL(Data Control Language)
使用MySQL数据库默认使用的都是 root 用户,超级管理员,拥有全部的权限。
在一个公司里面的数据库服务器上面可能同时运行这很多个项目的数据库,应该根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。
mysqld 是 MySQL 的主程序,服务器端。mysql 是 MySQL的命令行工具,客户端。
一、创建用户
1、语法
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
2、关键字说明
关键字 | 说明 |
'用户名' | 将创建的用户名 |
'主机名' | 指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost,如果想让该用户可以 从任意远程主机登陆,可以使用通配符% |
'密码' | 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器 |
3、案例
① 创建 user1 用户,只能在 localhost 这个服务器登录 MySQL 服务器,密码为 123
create user 'user1'@'localhost' identified by '123';
② 创建 user2 用户可以在任何电脑上登录 mysql 服务器,密码为 123
create user 'user2'@'%' identified by '123';
注意:创建的用户名都在 mysql 数据库的 user 表中可以查看到,密码经过了加密。
二、删除用户
1、语法
DROP USER '用户名'@'主机名';
2、案例
删除 user2
drop user 'user2'@'%';
三、修改用户密码
1、修改管理员密码
(1)语法
mysqladmin -uroot -p password 新密码
(2)具体操作
① 将 root 管理员的新密码改成 123456
② 要求输入旧密码
③ 使用新密码登录
2、修改普通用户密码
(1)基本语法
update user set password = password('新密码') where user = '用户名'
set password for '用户名'@'主机名' = password('新密码');
注意:需要在登录 MySQL 的情况下操作,新密码要加单引号。password 是一个内置函数,对密码进行加密。
(2)具体操作
① 将 ‘user1’@‘localhost’ 的密码改成 ‘666666’
② 使用新密码登录,老密码无法使用
3、MySQL 中忘记了 root 用户的密码?
(1)使用管理员运行 cmd --> net stop mysql 停止 mysql 服务
(2)在cmd中使用无验证方式启动 mysql 服务:
mysqld --skip-grant-tables
(3)再打开新的 cmd 窗口,直接输入 mysql 命令,敲回车,就可以登录成功。
(4)然后使用 mysql 数据库
user mysql;
(5)重新设置 root 用户的密码
update user set password = password('新密码') where user = 'root';
(6)关闭上面的两个窗口
(7)打开任务管理器,手动结束 mysqld.exe 的进程
(8)以管理员打开 cmd ,重新启动 mysql 服务
net start mysql
(9)使用新密码登录
mysql -uroot -proot
四、查询用户
MySQL 数据库的用户信息都存放在 mysql 数据库中的 user表
查询所有用户语法:
user mysql;
select * from user;
注意:通配符,% 表示可以在任意主机使用用户登录数据库。