【MySQL】02_MySQL用户认证及用户管理
1 创建用户
命令:
`CREATE USER 'username'@'host' IDENTIFIED BY 'password';`
说明:
username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆
如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码
密码可以为空,如果为空则该用户可以不需要密码登陆服务器
案例:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';
2 授权
命令:
grant all privileges ON databasename.tablename TO 'username'@'host'
grant all privileges ON databasename.tablename TO 'username'@'host' identified by '123456';
说明:
all:代表所有权限
privileges:用户的操作权限
如SELECT,INSERT,UPDATE等,如果要授予增删改查的话,把all privileges换成相应的权限即可。
databasename:数据库名
tablename:表名
如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
username:是用户名
如果没有创建该用户这里会自动创建
host:指访问数据库的客户端IP地址
如果所有IP地址可访问直接写%即可,如果是本地访问就是localhost。
如果授权访问需要密码的话,需要加上identified by '***'参数,后面单引号里面加上权限即可。
案例:
授权所有权限
# 给leihaidong这个用户所有数据库的所有权限。
grant all privileges on *.* to 'leihaidong'@'%' identified by '123456';
# 给leihaidong这个用户查询和更新的权限。
grant select,update on *.* to 'leihaidong'@'%' identified by '123456';
授权部分权限
# 给一个用户授权多张表权限
grant select(user_id,username) on smp.users to mo_user@'%' identified by '123345';
不是root用户登录给其它用户授权
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
注意:
1. 授权完成后需要使用flush privileges;刷新权限才算完成授权。
2. 如果你不是root用户登录给其它用户授权的话,需要以下写法。
3 设置与更改用户密码
命令:
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");
4 撤销用户权限
命令:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明:
privilege, databasename, tablename:同授权部分
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):
GRANT SELECT ON test.user TO 'pig'@'%',
则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';
命令并不能撤销该用户对test数据库中user表的SELECT 操作。
相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';
则REVOKE SELECT ON test.user FROM 'pig'@'%';
命令也不能撤销该用户对test数据库中user表的Select权限。
查看某个用户当前的授权情况:
SHOW GRANTS FOR 'leihaidong'@'%';
5 删除用户(删除用户授权)
命令:
DROP USER 'username'@'host';
注意:
1、如果上面的撤销用户授权失败的话,可以直接使用drop user这个命令直接删除某个用户的所有授权。
2、也可以使用Navicat Premium_11这个软件登录mysql后,查看mysql下的user表,删除对应用户的权限(前提是你远程数据使用的用户有对mysql数据库下user表有操作权限)
6 破解root登录密码
忘记了mysql登录密码了怎么办,只需要一下几步就可以轻松破解root登录密码。
- 停止mysqld或者mariadb服务,
- 在myqld配置文件my.cnf里面的[mysqld]模块下添加skip-grant-tables,保存退出。
- 重启mysqld或者mariadb服务。
- 使用msyql -uroot -p直接回车,无需输入密码直接登录。
- 使用mysql数据库
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
- 修改root密码。
Database changed
MariaDB [mysql]> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
Query OK, 5 rows affected (0.06 sec)
Rows matched: 5 Changed: 5 Warnings: 0
- 刷新权限,并退出
MariaDB [mysql]> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> quit
Bye
- 删除或注释上面我们加的skip-grant-tables,重启mysqld或者mariadb服务。
- 使用mysql -uroot -p命令,输入新密码登录。

浙公网安备 33010602011771号