`
soardragon
  • 浏览: 316731 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

MySQL数据库中用GRANT语句增添新用户

阅读更多
有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些。

下面的例子显示出如何使用MySQL客户安装新用户。这些例子假定权限已缺省被安装。这意味着为了改变,你必须在MySQL正在运行同一台机器上,你必须作为MySQL root用户连接,并且root用户必须对MySQL数据库有insert权限和reload管理权限。另外,如果你改变了root用户口令,你必须如下的MySQL命令指定它。

你可以通过发出GRANT语句增加新用户:

shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
      IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
      IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;

这些GRANT语句安装3个新用户:

monty:可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令('something'做这个。注意,我们必须对monty@localhost 和monty@"%"发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我们从本地主机连接接时由 mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。

admin:可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin processlist。没有授予数据库有关的权限。他们能在以后通过发出另一个GRANT语句授权。

dummy:可以不用一个口令连接的一个用户,但是只能从本地主机。全局权限被设置为'N'--USAGE权限类型允许你无需权限就可设置一个用户。它假定你将在以后授予数据库相关的权限。

你也可以直接通过发出INSERT语句增加同样的用户存取信息,然后告诉服务器再次装入授权表:

shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('something'),
        'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user VALUES('%','monty',PASSWORD('something'),
        'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user SET Host='localhost',User='admin',
         Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
            VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;

取决于你的MySQL版本,对上述,你可能必须使用一个不同数目'Y'值(在3.22.11以前的版本有更少的权限列)。对admin用户,只用在3.22.11开始的版本具有的更加可读的INSERT扩充的语法。

注意,为了设置一个超级用户,你只需创造一个user表条目,其权限字段设为'Y'。不需要db或host表的条目。

在user表中的权限列不是由最后一个INSERT语句明确设置的(对dummy用户),因此那些列被赋予缺省值'N'。这是GRANT USAGE做的同样的事情。

下列例子增加一个用户custom,他能从主机localhost、server.domain和whitehouse.gov连接。他只想要从 localhost存取bankaccount数据库,从whitehouse.gov存取expenses数据库和从所有3台主机存取customer 数据库。他想要从所有3台主机上使用口令stupid。

为了使用GRANT语句设置个用户的权限,运行这些命令:

shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
      ON bankaccount.*
      TO custom@localhost
      IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
      ON expenses.*
      TO custom@whitehouse.gov
      IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
      ON customer.*
      TO custom@'%'
      IDENTIFIED BY 'stupid';

通过直接修改授权表设置用户权限,运行这些命令(注意,在结束时FLUSH PRIVILEGES):

shell> mysql --user=root mysql
mysql> INSERT INTO user (Host,User,Password)
    VALUES('localhost','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
    VALUES('server.domain','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
    VALUES('whitehouse.gov','custom',PASSWORD('stupid'));
mysql> INSERT INTO db
    (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    Create_priv,Drop_priv)
    VALUES
    ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
    (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    Create_priv,Drop_priv)
    VALUES
    ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
    (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    Create_priv,Drop_priv)
    VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;

头3 个INSERT语句增加user表条目,允许用户custom用给定口令从不同的主机进行连接,但是没有授予任何许可(所有权限被设置为缺省值'N')。后3个INSERT语句增加db表条目,授予custom以bankaccount、expenses和customer数据库权限,但是只能在从正确的主机存取时。通常,在授权表直接被修改时,服务器必须被告知再次装入他们(用FLUSH PRIVILEGES)以便使权限修改生效。

如果你想要给特定的用户从一个给定的域上的任何机器上存取权限,你可以发出一个如下的GRANT语句:

mysql> GRANT ...
      ON *.*
      TO myusername@"%.mydomainname.com"
      IDENTIFIED BY 'mypassword';

为了通过直接修改授权表做同样的事情,这样做:

mysql> INSERT INTO user VALUES ('%.mydomainname.com', 'myusername',
      PASSWORD('mypassword'),...);
mysql> FLUSH PRIVILEGES;

你也可以使用xmysqladmin、mysql_webadmin甚至xmysql在授权表中插入、改变和更新值。你可以在MySQL的Contrib目录找到这些实用程序。
分享到:
评论

相关推荐

    MySQL数据库中用GRANT语句增添新用户并赋给用户权限.txt

    MySQL数据库中用GRANT语句增添新用户并赋给用户权限.txt

    mysql-不能插入中文的解决办法.pdf

    SQL 语句是 MySQL 中用来操作数据库的语言。下面是一些常用的 SQL 语句: 1. 创建数据库: ``` create database db_name; ``` 2. 删除数据库: ``` drop database db_name; ``` 3. 创建数据表: ``` create table ...

    MYSQL培训经典教程(共两部分) 1/2

    MYSQL 服务器交互作用 142 6.2.1锁定表的的方法 142 6.2.2 检查表的锁定协议 143 6.2.3 修复表的锁定协议 143 6.2.4 总结 144 6.3日志文件维护 144 6.3.1如何使用新的更新日志 144 6.3.2如何...

    数据库安全性(创建用户,授权,撤销权限等)SQL语句

    MySQL中的 `GRANT` 语句用于赋予用户特定的权限。例如,给予用户 `201215122` 对学生表(`student`)的查询权限: ```sql GRANT SELECT ON student.* TO '201215122'@'localhost'; ``` 这使得用户可以查询 `student...

    mysql操作指南详细列表

    - 用户管理:创建新用户,使用`GRANT`和`REVOKE`控制权限。 - 安全策略:设置强密码,限制远程访问,定期审计。 10. **MySQL扩展功能** - 触发器:自动执行特定操作,如在数据更改时更新关联表。 - 存储过程:...

    mysql基础知识总结(第二版)

    函数在MySQL中用于数据处理,如文本处理函数(如SUBSTRING、REPLACE),日期和时间处理函数(如DATE_FORMAT、NOW),数值处理函数(如ABS、ROUND),以及聚合函数(如COUNT、SUM、AVG)。 数据定义语言(DDL)涉及...

    mysql+haproxy

    MySQL 和 HAProxy 结合使用是实现数据库高可用性和负载均衡的一种常见策略。在这个实践中,我们将探讨如何设置 MySQL 主从复制和使用 HAProxy 进行读写分离。 **MySQL 主从复制** 主从复制是 MySQL 数据库的一个...

    MYSQL培训经典教程(共两部分) 2/2

    MYSQL 服务器交互作用 142 6.2.1锁定表的的方法 142 6.2.2 检查表的锁定协议 143 6.2.3 修复表的锁定协议 143 6.2.4 总结 144 6.3日志文件维护 144 6.3.1如何使用新的更新日志 144 6.3.2如何...

    mysql主从配置

    这里使用`GRANT`语句授予`dreye`用户从任何主机访问的权限,并且可以执行复制操作。 - **锁定并获取主服务器状态**:使用`flush tables with read lock`锁定所有表,然后执行`show master status\G;`来获取主服务器...

    掌握 SQL 这些经典核心知识点,不担心饭碗了.pdf

    - **Data Control Language (DCL) - 数据控制语言**:用于管理用户的权限和访问控制,例如 `GRANT` 和 `REVOKE` 命令。 #### 二、MySQL 语法规范与要求 **2.1 MySQL 的语法特性** - **大小写敏感性**:MySQL 不...

    sql学习自学通

    - 数据控制语言(DCL):用于管理用户权限,如GRANT和REVOKE语句。 #### 四、流行的SQL开发工具 - **Oracle SQL Developer**:Oracle公司提供的免费集成开发环境。 - **MySQL Workbench**:MySQL官方提供的图形化...

    MySQL基本命令、常用命令总结

    本文档主要介绍了一些基本和常用的MySQL命令,为需要操作MySQL数据库的用户提供了一个快速参考。 首先,启动MySQL服务的命令是`net start mysql`,而对于Windows系统,也可以使用`mysql -u root -p`命令来启动服务...

    2021-2022计算机二级等级考试试题及答案No.16581.docx

    4. MySQL的GRANTS语句用于管理用户权限,`SHOW GRANTS FOR "wang"@"localhost";`显示了用户wang在本地主机上的权限,如果结果显示`GRANT USAGE ON * . * TO "wang"@"localhost"`,意味着用户wang只有基本的连接权限...

    mysql代码-sql学习记录

    MySQL的`GRANT`和`REVOKE`语句用于管理用户权限,确保数据安全。理解角色和权限的概念对于数据库管理至关重要。 10. **性能优化**: 了解如何使用`EXPLAIN`分析查询执行计划,以及如何调整索引、查询语句和服务器...

    2021-2022计算机二级等级考试试题及答案No.12663.docx

    - **数据库对象创建**:MySQL 中用来创建数据库对象的命令是 CREATE(选项 A)。ALTER 用于修改已存在的数据库对象,DROP 用于删除数据库对象,GRANT 用于授权。 ### 26. 未完成的问题描述 由于题目描述未完整提供...

    2021-2022计算机二级等级考试试题及答案No.18556.docx

    - **知识点**:MySQL 中用来创建数据库对象的命令是 `CREATE`。 - **解释**:`CREATE` 命令用于创建数据库、表、索引等对象。 - **重要性**:掌握基本的SQL命令是进行数据库操作的基础。 #### Excel 高级筛选 - **...

    2021-2022计算机二级等级考试试题及答案No.10839.docx

    **题目**: MySQL中用来创建数据库对象的命令是? - **选项**: - A. `CREATE` - B. `ALTER` - C. `DROP` - D. `GRANT` - **正确答案**: A **解析**: 在MySQL中,`CREATE` 命令用于创建新的数据库对象,如数据库...

    cmd操作命令和linux命令大全收集

    start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令 mem 查看cpu使用情况 attrib 文件名(目录名) 查看某文件(目录)的属性 attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉...

Global site tag (gtag.js) - Google Analytics