' identified BY 'testpwd'
SELECT `Host` ,`User` ,`Select_priv` ,`Update_priv` FROM mysql.user WHERE `User` ='testUser';
?
执行结果显示执行成功,使用SELECT语句查询用户testUser的权限

查询结果显示SELECT和UPDATE权限字段均为Y
注意:User表中的user和host字段区分大小写,在查询的时候要指定正确的用户名或主机名
直接操作MYSQL用户表
不管是CREATE USER还是GRANT USER,在创建用户时,实际上都是在user表中添加一条新记录。
使用INSERT语句向mysql.user表INSERT一条记录来创建一个新用户
插入的时候必须要有INSERT权限
?
INSERT INTO mysql.user(host,user,password,[privilegelist])
VALUES ('host','username',password('password'),privilegeva luelist)
?
使用INSERT创建一个新用户,其用户名称为customer1,主机名为localhost,密码为customer1
?
INSERT INTO mysql.user(host,user,password)
VALUES ('localhost','customer1',password('customer1'))
?

语句执行失败,查看警告信息如下:
?
show WARNINGS ;
?

因为ssl_cipher这个字段在user表中没有定义默认值,所以在这里提示错误信息。
影响insert语句的执行,使用SELECT语句查看user表中的记录

可以看到,插入失败
删除普通用户
使用DROP USER语句删除用户,也可以直接通过DELETE从mysql.user表中删除对应的记录来删除用户
DROP USER语句用于删除一个或多个MYSQL帐户。要使用DROP USER,必须拥有MYSQL数据库的全局
CREATE USER 权限或DELETE权限。
删除testUser这个用户
?
DROP user 'testUser'@'localhost';
?


可以发现testUser这个用户已经删除了
使用delete语句删除用户
?
DELETE FROM mysql.user WHERE `Host`='localhost' and `User`='testUser'
?
root用户修改自己的密码
修改root密码的方式有多种
1、使用mysqladmin命令在命令行指定新密码
?
mysqladmin -u root -p password"rootpwd"
?
2、修改mysql数据库的user表
?
UPDATE mysql.user SET `Password` =password('rootpwd') WHERE `User`='root' and `Host`='localhost'
?
password('')函数用来加密用户密码。执行update之后需要执行flush privileges语句重新加载用户权限
3、使用SET语句修改root用户的密码
SET PASSWORD语句可以用来重新设置其他用户的登录密码或者自己使用的帐户密码
语法
?
SET PASSWORD=PASSWORD("ROOTPWD")
?
新密码必须用PASSWORD函数加密
使用root用户登录到mysql之后执行下面语句
?
SET password=password('123456')
?
执行之后需要使用执行flush privileges语句或者重启MYSQL重新加载用户权限
root用户修改普通用户密码
1、使用SET语句修改普通用户的密码
?
SET PASSWORD FOR 'USER'@'HOST' =PASSWORD("ROOTPWD")
?
2、使用update语句修改普通用户的密码
?
UPDATE mysql.user SET `Password` =password('rootpwd') WHERE `User`='root' and `Host`='localhost'
?
执行完毕之后需要使用flush privileges语句或者重启MYSQL重新加载用户权限
3、使用GRANT语句修改普通用户密码
?
GRANT USAGE ON *.* TO 'someuser'@'%' IDENTIFIED BY 'somepwd'
?
使用下面语句把testUser用户的密码改为123456
?
grant USAGE ON *testUser*TO 'localhost' identified BY '123456';
?
注意:使用GRANT语句和MYSQLADMIN设置密码,他们均会加密密码,这种情况下,不需要使用PASSWORD()函数
普通用户修改密码
使用SET语句修改自己的密码
?
SET password=password('newpassword');
?
比如修改testUser这个用户的密码,需要使用testUser这个用户登录到mysql,然后执行
?
SET password=password('123456');
?
root用户密码丢失的解决办法
使用--skip-grant-tables选项启动MYSQL服务
使用--skip-grant-tables选项启动MYSQL时,服务器将不加载权限判断,任何用户都能访问数据库
LINUX下
使用mysqld_safe来启动MYSQL服务,也可以使用/etc/init.d/mysql命令来启动mysql
?
mysqld_safe --skip-grant-tables user=mysql
?
或者
?
/etc/init.d/mysql start-mysqld --skip-grant-tables
?
启动MYSQL服务后,就可以使用root用户登录了
Windows下
详细可以看一下这篇文章
Windows mysql提示:1045 access denied for user 'root'@'localhost' using password yes
权限管理
MYSQL中的各种权限
对于GRANT和REVOKE语句,priv_type可以被指定为以下任何一种:
| 权限 |
意义 |
| ALL [PRIVILEGES] |
设置除GRANT OPTION之外的所有简单权限 |
| ALTER |
允许使用ALTER TABLE |
| ALTER ROUTINE |
更改或取消已存储的子程序 |
| CREATE |
允许使用CREATE TABLE |
| CREATE ROUTINE |
创建已存储的子程序 |
| CREATE TEMPORARY TABLES |
允许使用CREATE TEMPORARY TABLE |
| CREATE USER |
允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。 |
| CREATE VIEW |
允许使用CREATE VIEW |
| DELETE |
允许使用DELETE |
| DROP |