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

MySQL添加用户的两种方法(转)

阅读更多
文章开头,我就开门见山,直接为大家介绍在MySQL中添加用户的方法,即有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中添加用户两种方法的学习,相信现在在MySQL中添加用户的问题大家已经都学会了,很高兴与大家分享这些小经验,希望能够对大家有所帮助。
分享到:
评论

相关推荐

    C++连接mysql数据库的两种方法.docx

    C++连接mysql数据库的两种方法 在 C++ 中连接 mysql 数据库有两种方法,一种是利用 ADO 连接,另一种是利用 mysql 自己的 API 函数进行连接。下面我们将详细介绍这两种方法。 第一种方法:利用 ADO 连接 ADO...

    rhel下安装mysql的两种方法

    ### RHEL 下安装 MySQL 的两种方法 #### 一、背景介绍 在 Red Hat Enterprise Linux (RHEL) 系统上安装 MySQL 数据库是一项常见的任务,适用于多种应用场景,如 Web 应用开发、数据存储等。MySQL 提供了两种主要的...

    VS2013添加MySQL连接完美解决方案

    "VS2013添加MySQL连接完美解决方案"这个标题所指的就是解决这个问题的一种方法。 标题中的“完美解决方案”通常意味着一种全面且可靠的处理方式,能够确保用户在VS2013中顺利地与MySQL数据库进行交互。在这个案例中...

    mysql两种安装文档教程.rar

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,特别是在Web应用程序中。本教程将深入讲解两种常见的MySQL 5.7.x安装方法:二进制包安装和RPM...理解并掌握这两种方法将帮助你在不同环境中快速部署MySQL服务器。

    Centos5.8安装asterisk并配置mysql用户表

    然后,在Asterisk配置文件sip.conf中添加用户信息,并使用Mysql数据库连接实现在用户表中的数据。 Asterisk配置 在安装和配置Mysql用户表后,需要配置Asterisk以使用Mysql数据库。可以在sip.conf文件中添加用户...

    mysql版本升级方法

    ### MySQL版本升级方法详解 #### 一、背景与概述 MySQL作为一款广泛使用的开源关系型数据库管理系统,在实际应用中扮演着至关重要的角色。随着时间的推移和技术的发展,MySQL的新版本不断发布,修复了旧版本中存在...

    mysql 重置数据库密码方法

    本文将介绍两种 MySQL 数据库密码重置的方法。 方法一:跳过用户验证 mysql.exe 和 mysqld.exe 是 MySQL 数据库的两个关键文件。为了重置密码,我们需要首先找到这两个文件所在的文件夹。然后,打开 cmd 命令提示...

    MySQL实现创建存储过程并循环添加记录的方法

    在MySQL数据库中,存储过程是一种预编译的SQL语句集合,它可以封装一系列的操作,用于执行复杂的业务逻辑。创建存储过程并循环添加记录是数据库管理中的常见任务,尤其是在需要批量插入数据时。以下将详细解释如何在...

    用JSP+MySQL做的用户管理系统

    系统区分了用户和管理员两种角色,这涉及到权限控制的概念。用户通常只能查看自己的信息,而管理员则具有更高的权限,可以查看、修改所有用户的信息,甚至执行删除操作。这种角色和权限的划分是通过在数据库中为每个...

    c++连接mysql数据库的两种方法(ADO连接和mysql api连接)

    以上两种方法各有优势:ADO连接易于在多种数据库间切换,但依赖于ODBC驱动;而MySQL API直接与MySQL数据库交互,更为高效,但不具备跨数据库的灵活性。在实际开发中,根据具体需求选择合适的连接方法非常关键。此外...

    MYSQL忘记密码解决方法

    为了解决这个问题,我们可以使用两种方法来恢复MYSQL的密码。 方法一:使用--skip-grant-tables参数启动MYSQL 在这个方法中,我们需要以系统管理员身份登陆系统,然后打开 cmd,输入"net start"命令来查看MYSQL...

    SqlServer转mysql

    - **ODBC驱动程序**:为了实现两种不同数据库之间的连接,需要安装适当的ODBC(开放式数据库连接)驱动程序。 2. **配置SqlServer数据源**: - 打开“控制面板” -> “管理工具” -> “ODBC数据源”。 - 在用户...

    恢复数据库_把后缀.frm,.myd,myi转换为.sql导入mysql数据库

    本文提到了两种方法来进行文件转换与数据库恢复工作: - **直接复制法** - **本地转换导入法** ### 直接复制法 直接复制法的前提条件较为苛刻,需要源数据库与目标数据库版本一致且字符集相匹配。具体操作步骤为将...

    vsftp使用mysql实现虚拟用户访问

    在IT领域,特别是网络服务与安全配置中,利用vsFTPd结合MySQL数据库实现虚拟用户的访问控制是一种常见且高效的方法。这种方法不仅增强了FTP服务的安全性,同时也提供了更灵活的用户管理和资源分配方式。以下是对如何...

    mysql.zip_MYSQL_用户管理系统

    本项目“mysql.zip_MYSQL_用户管理系统”显然基于MySQL构建了一个用户管理的图书管理系统,提供了管理员和用户两种不同的访问权限。 首先,我们要了解MySQL的基本概念。MySQL的核心特性包括ACID(原子性、一致性、...

    MySql添加新用户及为用户创建数据库和给用户分配权限方法介绍

    有两种方式创建用户,一种是限制用户只能从本地主机(localhost)访问,另一种则是允许从任何远程地址(%)访问。 - 仅限本地IP访问: ```sql CREATE USER 'test'@'localhost' IDENTIFIED BY '123456'; ``` 在这里...

    Linux安装mysql

    在 Linux 系统中安装 MySQL 数据库可以通过两种方式,一种是通过下载 MySQL 的安装包,然后解压并安装;另一种是通过使用包管理器来安装。文章中使用的就是第一种方式,下载 MySQL 的安装包,然后解压并安装。 知识...

Global site tag (gtag.js) - Google Analytics