访问控制

你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制需要创建和管理用户账号。

多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表;

某些用户需要读表,但可能不需要更新表;

你可能想允许用户添加数据,但不允许他们删除数据;

某些用户(管理员)可能需要处理用户账号的权限,但多数用户不需要;

你可能想让用户通过存储过程访问数据,但不允许他们直接访问数据;

你可能想根据用户登录的地点限制对某些功能的访问。

不要使用root 应该严肃对待root登录的使用。仅在绝对需要时使用它(或许在你不能登录其他管理账号时使用)。不应该在日常的MySQL操作中使用root。

管理用户

mysql> 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

Database changed

mysql> SELECT user FROM user;

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

| user |

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

| debian-sys-maint |

| mysql.infoschema |

| mysql.session |

| mysql.sys |

| root |

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

5 rows in set (0.00 sec)

mysql数据库有一个名为user的表,它包含所有用户账号。user表有一个名为user的列,它存储用户登录名。

创建用户账号

mysql> CREATE USER ben IDENTIFIED BY 'p@$$w0rd';

Query OK, 0 rows affected (0.06 sec)

CREATE USER创建一个新用户账号。在创建用户账号时不一定需要口令。

指定散列口令 IDENTIFIED BY指定的口令为纯文本,MySQL将在保存到user表之前对其进行加密。为了作为散列值指定口令,使用IDENTIFIED BY PASSWORD。

使用GRANT或INSERT GRANT语句(稍后介绍)也可以创建用户账号,但一般来说CREATE USER是最清楚和最简单的句子。此外,也可以通过直接插入行到user表来增加用户,不过为安全起见,一般不建议这样做。MySQL用来存储用户账号信息的表(以及表模式等)极为重要,对它们的任何毁坏都可能严重地伤害到MySQL服务器。因此,相对于直接处理来说,最好是用标记和函数来处理这些表。

重命名账户

mysql> RENAME USER ben TO bforta;

Query OK, 0 rows affected (0.01 sec)

MySQL 5之前 仅MySQL 5或之后的版本支持RENAME USER。为了在以前的MySQL中重命名一个用户,可使用UPDATE直接更新user表。

删除用户账号

mysql> DROP USER bforta;

Query OK, 0 rows affected (0.00 sec)

在MySQL 5以前,DROP USER只能用来删除用户账号,不能删除相关的权限。因此,如果使用旧版本的MySQL,需要先用REVOKE删除与账号相关的权限,然后再用DROP USER删除账号。

设置访问权限

SHOW GRANTS FOR username@localhost;

为看到赋予用户账号的权限,使用SHOW GRANTS FOR。

用户定义为user@host MySQL的权限用用户名和主机名结合定义。如果不指定主机名,则使用默认的主机名%(授予用户访问权限而不管主机名)。

为设置权限,使用GRANT语句。GRANT要求你至少给出以下信息:

要授予的权限;

被授予访问权限的数据库或表;

用户名。

GRANT SELECT ON crashcourse.* TO bforta;

此GRANT允许用户在crashcourse.*(crashcourse数据库的所有表)上使用SELECT。通过只授予SELECT访问权限,用户bforta对crashcourse数据库中的所有数据具有只读访问权限。

GRANT的反操作为REVOKE,用它来撤销特定的权限。

REVOKE SELECT ON crashcourse.* FROM bforta;

这条REVOKE语句取消刚赋予用户bforta的SELECT访问权限。被撤销的访问权限必须存在,否则会出错。

GRANT和REVOKE可在几个层次上控制访问权限:

整个服务器,使用GRANT ALL和REVOKE ALL;

整个数据库,使用ON database.*;

特定的表,使用ON database.table;

特定的列;

特定的存储过程。

列出可以授予或撤销的每个权限。

权 限

说 明

ALL

除GRANT OPTION外的所有权限

ALTER

使用ALTER TABLE

ALTER ROUTINE

使用ALTER PROCEDURE和DROP PROCEDURE

CREATE

使用CREATE TABLE

CREATE ROUTINE

使用CREATE PROCEDURE

CREATE TEMPORARY TABLES

使用CREATE TEMPORARY TABLE

CREATE USER

使用CREATE USER、DROP USER、RENAME USER和REVOKE ALL PRIVILEGES

CREATE VIEW

使用CREATE VIEW

DELETE

使用DELETE

DROP

使用DROP TABLE

EXECUTE

使用CALL和存储过程

FILE

使用SELECT INTO OUTFILE和LOAD DATA INFILE

GRANT OPTION

使用GRANT和REVOKE

INDEX

使用CREATE INDEX和DROP INDEX

INSERT

使用INSERT

LOCK TABLES

使用LOCK TABLES

PROCESS

使用SHOW FULL PROCESSLIST

RELOAD

使用FLUSH

REPLICATION CLIENT

服务器位置的访问

REPLICATION SLAVE

由复制从属使用

SELECT

使用SELECT

SHOW DATABASES

使用SHOW DATABASES

SHOW VIEW

使用SHOW CREATE VIEW

SHUTDOWN

使用mysqladmin shutdown(用来关闭MySQL)

SUPER

使用CHANGE MASTER、KILL、LOGS、PURGE、MASTER和SET GLOBAL。还允许mysqladmin调试登录

UPDATE

使用UPDATE

USAGE

无访问权限

未来的授权 在使用GRANT和REVOKE时,用户账号必须存在,但对所涉及的对象没有这个要求。这允许管理员在创建数据库和表之前设计和实现安全措施。这样做的副作用是,当某个数据库或表被删除时(用DROP语句),相关的访问权限仍然存在。而且,如果将来重新创建该数据库或表,这些权限仍然起作用。

简化多次授权 可通过列出各权限并用逗号分隔,将多条GRANT语句串在一起

更改口令

mysql> SET PASSWORD FOR bforta=PASSWORD ('P@ssW0rd');

Query OK, 0 rows affected (0.01 sec)

SET PASSWORD更新用户口令。新口令必须传递到Password()函数进行加密。

SET PASSWORD还可以用来设置你自己的口令

mysql> SET PASSWORD =PASSWORD ('P@ssW0rd');

Query OK, 0 rows affected (0.01 sec)

在不指定用户名时,SET PASSWORD更新当前登录用户的口令。

mysql怎么访问用户B_MySQL访问控制和用户管理相关推荐

  1. mysql拒绝访问root用户_设置mysql的root用户允许远程登录

    设置MySQL的root用户允许远程登录 连接数据库 [root@localhost ~]# mysql -uroot -p密码 选择mysql数据库 mysql> use mysql; 设置访 ...

  2. Mysql创建用户给局域网内用户使用,开放权限,开放ip访问。

    需求: 开放数据库给局域网内用户使用,需要创建用户以及开放部分权限. 解决: 1.登录mysql数据库 未设置全局变量需要进入相关路径 cd mysql8.0/bin 登录mysql mysql -u ...

  3. mysql拒绝访问root用户_对于出现拒绝访问root用户的解决方案

    提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'由于使用mysql -u root 方式 ...

  4. 查看mysql运行的用户组_第六天、用户、组、权限、grep

    第六天.用户.组.权限.grep 权限总结表 操作 源目录权限 文件权限 目标目录权限 rm删文件 wx - - mv改名 wx - - mv移动文件 wx r wx cp复制文件 x r wx &g ...

  5. mysql图形化及命令行操作用户权限

    用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user ...

  6. mysql grant 主机名_MySQL GRANT:用户授权

    授权就是为某个用户赋予某些权限.例如,可以为新建的用户赋予查询所有数据库和表的权限.MySQL 提供了 GRANT 语句来为用户设置权限. 在 MySQL 中,拥有 GRANT 权限的用户才可以执行 ...

  7. http基于用户的访问控制--实战

    在http基于域名的虚拟主机的实现博文中有配置jd首页,这篇博文就实现,在访问jd首页的时候需要输入账号密码才能访问.本片博文是博文apache配置文件httpd.conf----小白福利中配置18: ...

  8. RHEL6.3配置Apache服务器(4) 基于用户的访问控制

    在上篇博文中介绍了基于客户端地址的访问控制,这种方法设置起来相对比较简单,但是不具备太大的实用价值.在实际应用中,我们大都是希望通过对用户进行身份验证从而来进行访问控制,在这篇博文中将主要介绍这种基于 ...

  9. mysql之库操作_创建用户_修改用户权限_修改用户密码

    用户操作: 1.create user 'Faye'@'127.0.0.1'IDENTIFIED BY '123'  #添加一个用户名字为Faye的用户,127.0.0.1为本机的ip,123为密码 ...

最新文章

  1. 【开篇】自我介绍和博客未来规划
  2. ECMAScript 继承机制实现
  3. java 连接 sftp失败,与apache vfs的SFTP连接失败,但使用WinSCP成功
  4. div 隐藏_div的position属性
  5. 【转载保存】Mysql主从同步报错集锦
  6. uniapp接收服务器消息,【教程】uniapp websocket实现消息推送
  7. linux查看目录下 开头,Linux下ls如何看到.开头的文件
  8. Python3与OpenCV3.3 图像处理(五)--图像运算
  9. PHP编译configure时常见错误(转)
  10. eslint常规语法检
  11. CUDA 8.0 + VS2013 + win10 x64开发环境搭建
  12. 更换jdk版本_滴滴夜莺发布 v3 版本,从运维监控演化成了运维平台
  13. 安装Python解释器【图文集合 - 详细流程】
  14. 带你一步步破解Android微信聊天记录解决方案
  15. 硬件编解码与软件编解码的区别
  16. java 抽屉效果_[Java教程]抽屉组件的滑动效果_星空网
  17. 作为学生,我是怎么半年赚到人生第一个三十万的
  18. 赛效:如何在线更改图片格式 图片格式在线转换方法介绍
  19. linux下查找占空间大的文件,Linux中查找当前目录下占用空间最大的前10个文件
  20. 高考是人生旅途的一处驿站

热门文章

  1. 外媒:微信小程序顺应“APP中启动APP”的行业潮流
  2. TFS2015的CI集成
  3. 来自.NET FM的感谢信
  4. wordpress搭建博客 主题推荐 2019
  5. C语言循环为1404的循环,考试,求大神帮忙,C语言,小弟感激不尽
  6. java 检测ip网速_java心跳测网速Demo
  7. 利用Android 8.0 ShortcutManager创建桌面快捷图标
  8. C++之STL之priority_queue
  9. C和指针之动态内存分配之编程练习4
  10. linux之用openssl命令Base64编码解码、md5/sha1摘要、AES/DES3加密解密