今天遇到一个mysql 权限的问题,即标题所述  xxx command denied to user xxx,一般mysql 这种报错,基本都属于当前用户没有进行该操作的权限,需要 root 用户授权才能解决,从网上找了一些资料,感觉这篇写得不错,分享一下:

可以用 CREATE USER 或 GRANT 创建用户,后者还同时分配相关权限。而 REVOKE 则用于删除用户权限,DROP USER 删除账户。

$ mysql -u root -p

password:

mysql> create database test; # 创建数据库

Query OK, 1 row affected (0.00 sec)

mysql> show databases; # 查看数据库是否创建成功

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| test |

+--------------------+

3 rows in set (0.00 sec)

mysql> grant all on test.* to user1@'%' identified by '123456' with grant option; # 创建特权管理用户

Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from mysql.user; # 查看用户创建是否成功

+------------------+-----------+

| user | host |

+------------------+-----------+

| user1 | % |

| root | 127.0.0.1 |

| debian-sys-maint | localhost |

| root | localhost |

| root | server |

+------------------+-----------+

5 rows in set (0.00 sec)

mysql> show grants for user1; # 查看用户权限

+--------------------------------------------------------------------------------------------------+

| Grants foruser1@% |

+--------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'user1'@'%' IDENTIFIED BY PASSWORD '*6BB...2CA2AD9' |

| GRANT ALL PRIVILEGES ON `test`.* TO 'user1'@'%' WITH GRANT OPTION |

+--------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

GRANT 语法:

GRANT privileges (columns)

ON what

TO user IDENTIFIED BY "password"

WITH GRANT OPTION

权限列表:

ALTER: 修改表和索引。

CREATE: 创建数据库和表。

DELETE: 删除表中已有的记录。

DROP: 抛弃(删除)数据库和表。

INDEX: 创建或抛弃索引。

INSERT: 向表中插入新行。

REFERENCE: 未用。

SELECT: 检索表中的记录。

UPDATE: 修改现存表记录。

FILE: 读或写服务器上的文件。

PROCESS: 查看服务器中执行的线程信息或杀死线程。

RELOAD: 重载授权表或清空日志、主机缓存或表缓存。

SHUTDOWN: 关闭服务器。

ALL: 所有权限,ALL PRIVILEGES同义词。

USAGE: 特殊的 "无权限" 权限。

用 户账户包括 "username" 和 "host" 两部分,后者表示该用户被允许从何地接入。user1@'%' 表示任何地址,默认可以省略。还可以是 "user1@192.168.1.%"、"user1@%.abc.com" 等。数据库格式为 db@table,可以是 "test.*" 或 "*.*",前者表示 test 数据库的所有表,后者表示所有数据库的所有表。

子句 "WITH GRANT OPTION" 表示该用户可以为其他用户分配权限。

我们用 root 再创建几个用户,然后由 test 数据库的管理员 user1 为他们分配权限。

mysql> create user user2 identified by '123456', user3 identified by 'abcd';

Query OK, 0 rows affected (0.00 sec)

mysql> select user, host from mysql.user;

+------------------+-----------+

| user | host |

+------------------+-----------+

| user1 | % |

| user2 | % |

| user3 | % |

| root | 127.0.0.1 |

| debian-sys-maint | localhost |

| root | localhost |

| root | server |

+------------------+-----------+

7 rows in set (0.00 sec)

好了,我们退出改用 user1 登录并针对 test 数据库进行操作。

mysql> quit # 退出

Bye

$ mysql -u user1 -p123456 test # 使用新用户登录

mysql> select database(); # 确认当前工作数据库

+------------+

| database() |

+------------+

| test |

+------------+

1 row in set (0.00 sec)

mysql> select current_user(); # 确认当前工作账户

+----------------+

| current_user() |

+----------------+

| user1@% |

+----------------+

1 row in set (0.00 sec)

继续,创建一个数据表。

mysql> create table table1 # 创建表

-> (

-> name varchar(50),

-> age integer

-> );

Query OK, 0 rows affected (0.02 sec)

mysql> show tables; # 查看表是否创建成功

+----------------+

| Tables_in_test |

+----------------+

| table1 |

+----------------+

1 row in set (0.00 sec)

mysql> describe table1; # 查看表结构

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| name | varchar(50) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

2 rows inset (0.00 sec)

mysql> insert into table1 values('Tom', 20); # 插入记录

Query OK, 1 row affected (0.00 sec)

mysql> select * from table1; # 查询记录

+------+------+

| name | age |

+------+------+

| Tom | 20 |

+------+------+

1 row inset (0.00 sec)

接下来我们为 user2, user3 分配权限。

mysql> grant select on test.* to user2; # 为 user2 分配 SELECT 权限。

Query OK, 0 rows affected(0.00sec)

mysql> grant selecton test.* to user3; # 为 user3 分配 SELECT 权限。

Query OK, 0 rows affected(0.00sec)

mysql> grant insert, update on test.* to user2; # 再为 user2 增加 INSERT, UPDATE 权限。

Query OK, 0 rows affected(0.00sec)

好了,我们退出,切换成 user2 操作看看。

$ mysql -u user2 -p123456

mysql> use test; # 切换工作数据库

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select database(); # 验证当前工作数据库

+------------+

| database() |

+------------+

| test |

+------------+

1 row in set (0.00 sec)

mysql> select user(); # 验证当前账户

+-----------------+

| user() |

+-----------------+

| user2@localhost |

+-----------------+

1 row in set (0.00 sec)

mysql> show grants for user2; # 查看当前用户权限,显然后来添加的 INSERT, UPDATE 被添加了。

+--------------------------------------------------------------------------------------------------+

| Grants for user2@% |

+--------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'user2'@'%' IDENTIFIED BY PASSWORD '*6BB837....2C9' |

| GRANT SELECT, INSERT, UPDATE ON `test`.* TO 'user2'@'%' |

+--------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

进行操作测试。

mysql> insert intotable1 values("Jack", 21); # INSERT 操作成功

Query OK, 1 row affected(0.00sec)

mysql> update table1 setage=22 where name='Jack'; # UPDATE 操作成功

Query OK, 1 row affected(0.00sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select* fromtable1; # SELECT 操作成功

+------+------+

| name | age |

+------+------+

| Tom | 20 |

| Jack | 22 |

+------+------+

2 rows inset(0.00sec)

mysql> delete fromtable1 whereage=22; # DELETE 操作无权限

ERROR 1142 (42000): DELETE command denied to user 'user2'@'localhost' for table 'table1'

我们切换回 user1 管理账户,移除 user2 的 UPDATE 权限看看。

$ mysql -u user1 -p123456 test

mysql> revoke update on test.* from user2; # 移除 UPDATE 权限

Query OK, 0 rows affected (0.00 sec)

再次切换回 user2。

$ mysql -u user2 -p123456 test

mysql> show grants for user2; # UPDATE 权限被移除

+--------------------------------------------------------------------------------------------------+

| Grants for user2@% |

+--------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'user2'@'%' IDENTIFIED BY PASSWORD '*6B...2AD9' |

| GRANT SELECT, INSERT ON `test`.* TO 'user2'@'%' |

+--------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

mysql> update table1 set age=23 where name='Jack'; # 不在拥有 UPDATE 权限

ERROR 1142 (42000): UPDATE command denied to user 'user2'@'localhost' for table 'table1'

好了,到此我们基本完成了创建用户和分配权限的操作。接下来,我们回到 root 进行修改用户密码和删除用户操作。

$ mysql -u root -p123456

mysql> set password for user3=password('abcabc'); # 修改用户 user3 密码

Query OK, 0 rows affected (0.00 sec)

mysql>flush privileges; # 刷新权限表(通常只在直接修改相关管理数据表后需要该操作)

Query OK, 0 rows affected (0.00 sec)

mysql> revoke all on *.* from user2; # 移除 user2 在所有数据库上的权限

Query OK, 0 rows affected (0.00 sec)

mysql> drop user user2; # 删除 user2 账户

Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from mysql.user; # 验证删除结果

+------------------+-----------+

| user | host |

+------------------+-----------+

| user1 | % |

| user3 | % |

| root | 127.0.0.1 |

| debian-sys-maint | localhost |

| root | localhost |

| root | server |

+------------------+-----------+

6 rows inset (0.00 sec)

用户 user2 无法再次使用。

$ mysql -u user2 -p123456 test

ERROR 1045 (28000): Access denied for user 'user2'@'localhost' (using password: YES)

试试 user3。

$ mysql -u user3 -pabc test # 连接失败!哦,对了,我们修改了密码。

ERROR 1045 (28000): Access denied for user 'user3'@'localhost' (using password: YES)

$ mysql -u user3 -pabcabc test # 新密码成功

mysql> select * from table1; # SELECT 操作成功

+------+------+

| name | age |

+------+------+

| Tom | 20 |

| Jack | 22 |

+------+------+

2 rows inset (0.00 sec)

要修改自己的密码直接执行 "set password = password('new_password');" 即可。

------- 摘要 --------------------------------------

创建用户:

GRANT insert, update ON testdb.* TO user1@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

CREATE USER user2 IDENTIFIED BY 'password';

分配权限:

GRANT select ON testdb.* TO user2;

查看权限:

SHOW GRANTS FOR user1;

修改密码:

SET PASSWORD FOR user1 = PASSWORD('newpwd');

SET PASSWORD = PASSWORD('newpwd');

移除权限:

REVOKE all ON *.* FROM user1;

删除用户:

DROP USER user1;

数据库列表:

SHOW DATABASES;

数据表列表:

SHOW TABLES;

当前数据库:

SELECT DATABASE();

当前用户:

SELECT USER();

数据表结构:

DESCRIBE table1;

刷新权限:

FLUSH PRIVILEGES;

mysql command denied_Mysql 用户权限管理--从 xxx command denied to user xxx相关推荐

  1. mysql .myi权限_Day02-a.m.-MySQL体系结构与用户权限管理

    1. 数据库逻辑结构 何为逻辑结构? 登录数据库后,通过执行SQL命令看到的对象,就是逻辑结构 2. 数据库物理结构 为么要研究数据库的物理结构? 因为数据库的逻辑结构(库.表)最终还是要落到磁盘上, ...

  2. MySQL讲义第 55 讲——用户权限管理之创建和删除用户

    MySQL讲义第 55 讲--用户权限管理之创建和删除用户 文章目录 MySQL讲义第 55 讲--用户权限管理之创建和删除用户 一.创建用户 1.使用 create user 命令创建用户 2.使用 ...

  3. mysql服务器权限说明,MySQL用户权限管理详解

    用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库.哪些表 2. 可以限制用户对哪些表执行SELECT.CREATE.DELETE.DELETE.ALTER等操作 3. 可以限制用户登录的IP ...

  4. mysql数据库应用的权限层级_MySQL数据库的用户权限管理

    嗨!各位小伙伴 今天翻了一下历史记录 MySQL 数据库还有点内容 今天开始我们就来补上吧~ 用户权限管理 伙伴们要知道,在数据库方面有两个方向.一个是数据库管理员(Database Administ ...

  5. mysql用户_MySQL用户权限管理详解

    用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库.哪些表 2. 可以限制用户对哪些表执行SELECT.CREATE.DELETE.DELETE.ALTER等操作 3. 可以限制用户登录的IP ...

  6. 二十、MySQL之用户权限管理(用户管理、权限管理、忘记root密码的解决方案)

    用户权限管理:在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全. 通常,一个用户的密码不会长期不变,所以需要经常性的变更数据库用户密码来确保用户本身安全(mysql客户端用 ...

  7. MySQL添加用户及用户权限管理

    目录 1.用户 <1> 用户信息 <2> 创建用户 <3> 删除用户 <4> 修改用户密码 2.用户权限管理 <1> 查看用户权限 < ...

  8. MySQL数据库8(十八)用户权限管理

    用户权限管理 用户权限管理:在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全 用户管理 Mysql需要客户端进行连接认证才能进行服务器操作,需要用户信息.Mysql中所有用 ...

  9. mysql数据库用户及用户权限管理

    1.mysql数据库的权限 (1)mysql数据库用户权限级别 1)全局性管理权限:作用于整个mysql实例级别 2)数据库级别:作用于指定的某个数据库上或者所有数据库上 3)数据库对象级别权限:作用 ...

最新文章

  1. Spring Cloud应用开发(四:服务容错保护)
  2. 刘教授的Linux操作系统考试复习题
  3. java红牛农场答案_Java面向对象程序设计实验指导与习题解答(21世纪高等学校计算机专业实用规划教材)...
  4. Razor Templating Engine
  5. FreeSql (三十三)CodeFirst 类型映射
  6. 我在 1969 年写代码
  7. iOS could not set nil as the value for the key
  8. 图片放大后不清晰怎么处理?
  9. 单层感知器python_深度学习之(神经网络)单层感知器(python)(一)
  10. @repository注解
  11. Python -- 列表解析式习题:九九乘法表、ID号
  12. Unity 1.Roll a Ball
  13. Windows 运行chkdsk磁盘修复工具命令参数详解
  14. 机器学习股票预测_是否进行基础投资工作,以尝试通过机器学习预测股票成功...
  15. 应用系统性能测试六大步
  16. Adobe Illustrator软件安装下载
  17. Idea——Tomcat和Maven使用 报错——Warning: No artifacts configured 解决方法
  18. 分析一下metro下两种Bundle格式
  19. 最全mysql基本使用
  20. rn android软键盘遮挡布局处理,完美解决RN 键盘遮挡问题

热门文章

  1. 2022-2028全球与中国液流电池储能系统市场现状及未来发展趋势
  2. VEGAS中的项目工程文件打不开该如何解决?
  3. exchange问题
  4. 【MySQL】mysql数据库备份实战-mysqldump
  5. axios二次封装以及API接口统一管理
  6. 无线传输最远可以传输距离_无线电源传输的梦想可能很快成为现实
  7. 一文秒懂图卷积神经网络Graph Convolutional Network(GCN)——从图信号处理(GSP)到图卷积神经网络详细推导
  8. 室内场景识别任务的参赛攻略!第一名经验分享,Malena.
  9. EDIUS怎么校正颜色轮
  10. 基于Python的Opencv边缘检测