`
zhangfeilo
  • 浏览: 399079 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

Mysql中创建用户帐户的方法

阅读更多

1.CREATE USER

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
    [, user [IDENTIFIED BY [PASSWORD] 'password']] ...

CREATE USER用于创建新的MySQL账户。要使用CREATE USER,您必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。对于每个账户,CREATE USER会在没有权限的mysql.user表中创建一个新记录。如果 账户已经存在,则出现错误。

使用自选的IDENTIFIED BY子句,可以为账户给定一个密码。user值和 密码的给定方法和GRANT语句一样。特别是,要在纯文本中指定密码,需忽略PASSWORD关键词。要把 密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD

2.使用GRANT语句

最好的方法是使用GRANT语句,因为这样更精确,错误少。从MySQL 3.22.11起提供了GRANT;它的主要用途是来给帐户授权的,但也可用来建立新帐户并同时授权。注意:当mysql运行于no_auto_create_user时要提供新建用户的密码,否则不能创新用户。
下面的示例说明如何使用MySQL客户端程序来设置新用户。
首先,使用MySQL程序以MySQL root用户来连接服务器:

shell> MySQL --user=root MySQL

如果你为root账户指定了密码,还需要为该MySQL命令和本节中的其它命令提供--password-p选项。

root连接到服务器上后,可以添加新账户。下面的语句使用GRANT来设置四个新账户:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'

    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'

    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';

mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';

GRANT语句创建的账户有下面的属性:

·         其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('monty'@'localhost')只用于从本机连接时。另一个账户('monty'@'%')可用于从其它主机连接。请注意monty的两个账户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比'monty'@'%'账户更具体,这样在user表排序顺序中排在前面。(user表排序的讨论要参考mysql手册)

·         一个账户有用户名admin,没有密码。该账户只用于从本机连接。授予了RELOADPROCESS管理权限。这些权限允许admin用户执行mysqladmin reloadmysqladmin refreshmysqladmin flush-xxx命令,以及mysqladmin processlist。未授予访问数据库的权限。你可以通过GRANT语句添加此类权限。

·         一个账户有用户名dummy,没有密码。该账户只用于从本机连接。未授予权限。通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为'N'。假定你将在以后将具体权限授予该账户。

3.直接操作MySQL授权表

    除了GRANT,你可以直接用INSERT语句创建相同的账户,然后使用FLUSH PRIVILEGES告诉服务器重载授权表。

shell> mysql --user=root mysql

mysql> INSERT INTO user
    ->     VALUES('localhost','monty',PASSWORD('some_pass'),
    ->     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user
    ->     VALUES('%','monty',PASSWORD('some_pass'),
    ->     '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;

当你用INSERT创建账户时使用FLUSH PRIVILEGES的原因是告诉服务器重读授权表。否则,只有重启服务器后更改方会被注意到。使用 GRANT,则不需要使用FLUSH PRIVILEGES

INSERT使用PASSWORD()函数是为了加密密码。GRANT语句为你加密密码,因此不需要PASSWORD()

'Y'值启用账户权限。对于admin账户,还可以使用更加可读的INSERT扩充的语法(使用SET)。

在为dummy账户的INSERT语句中,只有user表中的HostUserPassword列记录为指定的值。没有一个权限列为显式设置,因此MySQL将它们均指定为 默认值'N'。这样等同于GRANT USAGE的操作。

请注意要设置超级用户账户,只需要创建一个权限列设置为'Y'user表条目。user表权限为全局权限,因此其它 授权表不再需要条目。

4.举几个应用grant创建帐户和授权的例子

下面的例子创建3个账户,允许它们访问专用数据库。每个账户的用户名为custom,密码为obscure

要想用GRANT创建账户,使用下面的语句:

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

3个账户可以用于:

·         1个账户可以访问bankaccount数据库,但只能从本机访问。

·         2个账户可以访问expenses数据库,但只能从主机whitehouse.gov访问。

·         3个账户可以访问customer数据库,但只能从主机server.domain访问。

要想不用GRANT设置custom账户,使用INSERT语句直接修改 授权表:

shell> mysql --user=root mysql
mysql> INSERT INTO user (Host,User,Password)
    ->     VALUES('localhost','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
    ->     VALUES('whitehouse.gov','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
    ->     VALUES('server.domain','custom',PASSWORD('obscure'));
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('server.domain','customer','custom',
    ->     'Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;
 

3INSERT语句在user表中加入条目,允许用户custom从各种主机用给定的密码进行连接,但不授予全局权限(所有权限设置为 默认值'N')。后面3INSERT语句在user表中加入条目,为custom授予bankaccountexpensescustomer数据库权限,但只能从合适的主机访问。通常若直接修改 授权表,则应告诉服务器用FLUSH PRIVILEGES重载授权表,使权限更改生效。

如果你想要让某个用户从给定域的所有机器访问(例如,mydomain.com),你可以在账户名的主机部分使用含'%'通配符的GRANT语句:

mysql> GRANT ...
    ->     ON *.*
    ->     TO 'myname'@'%.mydomain.com'
    ->     IDENTIFIED BY 'mypass';

要想通过直接修改授权表来实现:

mysql> INSERT INTO user (Host,User,Password,...)
    ->     VALUES('%.mydomain.com','myname',PASSWORD('mypass'),...);

mysql> FLUSH PRIVILEGES;

5.创建账户的其它方法是使用MySQL账户管理功能的第三方程序。phpMyAdmin即是一个程序。

从MySQL删除用户账户

要想移除账户,应使用DROP USER语句。

 

分享到:
评论

相关推荐

    MySQL中创建用户及授权

    在 MySQL 中创建用户有两种方法:使用 CREATE USER 命令和使用 GRANT 命令。 使用 CREATE USER 命令 CREATE USER 命令用于创建新的 MySQL 账户。要使用 CREATE USER,您必须拥有 mysql 数据库的全局 CREATE USER ...

    国家开放大学 MySQL数据库应用 实验训练1 在MySQL中创建数据库和表

    "国家开放大学 MySQL数据库应用实验训练1 在MySQL中创建数据库和表" 本实验训练旨在让学生掌握 MySQL 中的数据库和表的创建过程。 MySQL 是一种关系型数据库管理系统,广泛应用于各种领域。为提高学生的实践能力,...

    MySql示例1:创建账户表及测试数据.zip

    在这个名为"MySql示例1:创建账户表及测试数据.zip"的压缩包中,我们很显然会发现一个关于如何在MySQL中创建账户表并填充测试数据的教学示例。下面,我们将深入探讨这个主题。 首先,创建一个账户表通常涉及设计...

    实验训练1 在MySQL中创建数据库和表.docx

    安装完成后,需要配置MySQL的启动参数和账户信息,包括设置root密码、添加用户账户等。 二、创建数据库 创建数据库是MySQL管理的基础步骤之一,使用CREATE DATABASE语句可以创建新的数据库。例如,创建“汽车用品...

    MySQL创建数据库与创建用户以及授权

    1、create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 ...MySQL创建数据库与创建用户以及授权相关SQL语句,摘自博客http://www.cnblogs.com/janken/p/5500320.html

    在Qt中创建MySQL数据库.txt

    ### 在Qt中创建MySQL数据库 #### 一、简介与背景 在现代软件开发中,图形用户界面(GUI)的应用程序非常普遍,而Qt作为一个跨平台的C++图形用户界面应用程序开发框架,在桌面应用开发领域拥有广泛的应用。对于需要...

    Mysql创建新用户的问题1

    MySQL中的用户账户由用户名和主机名组成,例如`username@hostname`。用户名是用户登录的标识,而主机名则指定用户可以从哪个主机或IP地址连接到数据库服务器。在大多数情况下,主机名可能是`localhost`(本地连接)...

    win764位配置mysql5.6免安装版,初始化配置和Mysql创建新用户方法.参考.pdf

    本文详细介绍了如何在 Windows 7 64位环境下配置 MySQL 5.6 免安装版,并对其进行了初始化配置,同时介绍了如何解决启动过程中可能遇到的问题,以及如何修改 root 用户密码和创建新用户的方法。通过以上步骤,可以在...

    以普通权限运行MySQL的操作说明

    - 打开“控制面板”->“用户账户”->“管理其他账户”->“添加新用户”。 - 输入用户名“mysqluser”,并设置密码。 - 在“账户类型”中选择“标准用户”。 - 取消勾选“用户可以更改密码”和“密码永不过期”。...

    mysql如何添加用户

    `命令,将当前操作环境切换至mysql系统数据库,因为所有用户账户信息都存储在这个数据库中。 3. **创建新用户**:使用`GRANT`语句创建新用户,并指定用户的主机地址(通常是IP地址或'localhost')和密码。 ```sql...

    Mysql根用户root密码忘记后的处理方法

    在日常的数据库管理工作中,我们可能会遇到MySQL根用户root密码遗忘的情况。这可能会导致无法登录数据库进行管理和维护工作。本文将详细介绍几种有效的解决方法来帮助用户找回或重置root用户的密码。 #### 方法一:...

    MySQL-添加新用户简化说明

    在数据库管理中,为了确保数据的安全性和可控性,经常需要创建新的用户账户,并为这些账户分配特定的权限。MySQL作为一款广泛使用的开源关系型数据库管理系统,提供了强大的用户管理和权限控制功能。其中,`GRANT`...

    MySQL创建新用户、增加账户的2种方法及使用实例

    可以用两种方式创建MySQL账户: 1.使用GRANT语句 2.直接操作MySQL授权表 最好的方法是使用GRANT语句,因为这样更精确,错误少。 创建超级用户: 代码如下: mysql> GRANT ALL PRIVILEGES ON *.* TO ‘monty’@’...

    MySQL的账户与权限管理

    在MySQL中,管理员可以通过GRANT和REVOKE语句来创建用户账户、授予和撤销权限。这有助于确保数据库的安全性和数据的完整性。 首先,GRANT语句用于创建新用户账户并赋予特定的权限。例如,`GRANT SELECT, INSERT ON ...

    Mysql 5.1 中文手册

    5. **安全性**:这部分会讲解如何创建和管理用户账户,设置权限,以及使用GRANT和REVOKE语句控制对数据库的访问。 6. **复制与集群**:MySQL的复制功能允许数据在多个服务器之间同步,提供高可用性和负载均衡。手册...

    mysql 账号权限管理命令

    MySQL 账号 权限, 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建

Global site tag (gtag.js) - Google Analytics