`

mysql对用户的操作

 
阅读更多
向MySQL增加新用户账户
可以用两种方式创建MySQL账户:
•         使用GRANT语句
•         直接操作MySQL授权表
最好的方法是使用GRANT语句,因为这样更精确,错误少。
创建账户的其它方法是使用MySQL账户管理功能的第三方程序。phpMyAdmin即是一个程序。
下面的示例说明如何使用MySQL客户端程序来设置新用户。你必须以MySQL root用户连接MySQL服务器,并且root账户必须有mysql数据库的Insert权限和RELOAD管理权限。
首先,使用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表排序顺序中排在前面。
•         一个账户有用户名admin,没有密码。该账户只用于从本机连接。授予了RELOAD和PROCESS管理权限。这些权限允许admin用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-xxx命令,以及mysqladmin processlist。未授予访问数据库的权限。你可以通过GRANT语句添加此类权限。
•         一个账户有用户名dummy,没有密码。该账户只用于从本机连接。未授予权限。通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为'N'。假定你将在以后将具体权限授予该账户。
除了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表中的Host、User和Password列记录为指定的值。没有一个权限列为显式设置,因此MySQL将它们均指定为 默认值'N'。这样等同于GRANT USAGE的操作。
请注意要设置超级用户账户,只需要创建一个权限列设置为'Y'的user表条目。user表权限为全局权限,因此其它 授权表不再需要条目。
下面的例子创建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;

前3个Insert语句在user表中加入条目,允许用户custom从各种主机用给定的密码进行连接,但不授予全局权限(所有权限设置为 默认值'N')。后面3个Insert语句在user表中加入条目,为custom授予bankaccount、expenses和customer数据库权限,但只能从合适的主机访问。通常若直接修改 授权表,则应告诉服务器用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;
从MySQL删除用户账户
要想移除账户,应使用Drop USER语句.
Drop USER user [, user] ...
Drop USER语句用于删除一个或多个MySQL账户。要使用Drop USER,您必须拥有mysql数据库的全局Create USER权限或Delete权限。使用与GRANT或REVOKE相同的格式为每个 账户命名;例如,'jeffrey'@'localhost'。 账户名称的用户和主机部分与用户表记录的User和Host列值相对应。
使用Drop USER,您可以取消一个账户和其权限,操作如下:
Drop USER user;
该语句可以删除来自所有授权表的帐户权限记录。
drop user username@'%'
drop user username@localhost
分享到:
评论

相关推荐

    mysql-5.7操作手册(中文版).pdf

    MySQL 5.7 操作手册中文版 MySQL 5.7 是一个功能强大且广泛使用的关系数据库管理系统。该手册提供了 MySQL 5.7 的详细使用指南,涵盖了安装、配置、管理、优化等方面的内容。 安装和升级 MySQL MySQL 5.7 提供了...

    MySql\Mysql创建用户和表.docx

    授予用户 joe 来自 10.163.225.87 的权限,可以对数据库 vtdc 的所有表进行所有操作: mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by '123'; 授予用户 joe 来自 10.163.225.87 的权限...

    mysql命令行操作详细

    本节内容将详细介绍 MYSQL 命令行操作的各种命令和技巧,包括连接 MYSQL、修改密码、增加新用户、数据库操作等。 一、连接 MYSQL MYSQL 命令行操作的第一步是连接到 MYSQL 服务器。连接命令的格式为:mysql -h ...

    mysql审计了解用户对mysql的操作

    总的来说,MySQL审计是数据库管理的重要组成部分,通过对用户操作的详细记录,提供了一种有效的监控和保护机制。正确配置和使用审计功能,可以帮助管理员及时发现潜在的问题,提升数据库的安全性和稳定性。

    jsp操作mysql简单实例

    在本实例中,我们将探讨如何使用JSP(JavaServer Pages)与MySQL数据库进行交互,实现基本的Web应用程序功能,如用户注册、登录、数据增删改查等。这个压缩包包含了一个简单的Web应用实例,提供了所需的JDBC驱动以及...

    Mysql常用操作语句.

    例如,使用root用户登录Mysql服务器: ``` C:program filesmysqlmysql server 4.1bin>mysql -u root -p Enter password: ``` 输入用户名和密码后,回车键确认输入,等待出现"Enter password:"提示,然后输入密码回车...

    MySQL可视化操作工具

    MySQL可视化操作工具是数据库管理员和开发人员常用的辅助软件,它以图形化界面提供对MySQL数据库的管理和操作,使得用户无需通过命令行即可进行数据查询、编辑、管理等操作。这样的工具提高了工作效率,降低了操作...

    Linux操作系统中如何安装MySQL数据库

    本文详细介绍了如何在 Linux 操作系统中安装 MySQL 数据库,包括下载安装包、解压缩安装包、创建 mysql 组和用户、初始化数据库文件、设置权限、启动服务、设置密码等步骤。通过这些步骤,我们可以成功地安装 MySQL ...

    vc 操作mysql数据库

    总之,“vc 操作mysql数据库”是一个涵盖数据库连接、查询、用户交互和事务处理等多个技术点的综合实践。通过这个DEMO,开发者可以学习如何在Windows应用中集成MySQL数据库,为用户提供数据管理功能。同时,这也提醒...

    mysql操作手册

    - **MySQL 论坛**:这是一个社区支持平台,用户可以在这里与其他MySQL用户交流使用过程中遇到的问题。 - **MySQL 邮件列表**:提供了一个讨论MySQL技术问题的邮件组,适合深入的技术交流。 - **MySQL 社区支持**:...

    MySQL管理密码用户授权实践

    2. MySQL用户授权及撤销 用户授权和撤销是数据库管理中另一个重要的方面,这允许管理员控制不同用户对数据库的访问权限。 2.1 用户授权 为了给予用户访问数据库的权限,管理员需要执行授权操作。授权的基本语句...

    ExcelVBA操作MySQL

    ### Excel VBA 操作 MySQL 全面指南 #### 一、准备工作 在开始使用 Excel VBA 来操作 MySQL 数据库之前,需要进行一系列的基础配置工作。以下步骤将帮助您完成必要的准备工作。 **1. MySQL 简介** MySQL 是一个...

    MySQL 图形化操作界面

    MySQL图形化操作界面是数据库管理的一种直观方式,它为用户提供了友好的图形界面,使得数据库的管理和操作变得更加简单。在数据库管理系统(如MySQL)中,这些工具通常包括数据浏览、查询构建、表设计、备份与恢复、...

    mysql5.7操作文档大全

    - **删除MySQL用户以及用户组**:使用`id mysql`查看MySQL用户及其所属组,并使用`userdel mysql`命令删除这些用户及组。 #### 三、安装MySQL数据库 - **下载MySQL安装包**:从MySQL官方网站下载适合Linux环境的二...

    Linux操作MySql的基本命令

    Linux 操作 MySQL 的基本命令是 MySQL 数据库管理的基础,了解这些命令可以帮助用户更好地管理和维护 MySQL 数据库。 1. 创建 mysqld 数据库的管理用户 在 Linux 下创建 mysqld 数据库的管理用户,可以使用以下...

    mysql可视化操作插件 可视化操作插件 mysql插件 navicat8_mysql_cs

    MySQL可视化操作插件是数据库管理中的重要工具,它为用户提供了直观、易用的图形界面,使得数据库的管理和操作变得更加简单。Navicat8_mysql_cs是这样一款专为MySQL设计的可视化工具,它包含了多种功能,帮助用户...

    Qt对MySQL数据库界面登录操作

    2. MySQL服务器:安装并配置好MySQL服务,创建所需的数据库和用户。 3. MySQL驱动:Qt需要连接到MySQL,所以我们需要安装`libmysqlclient`(或在Windows上是`qmysql`驱动)。 接下来,我们将分步骤讲解如何构建这个...

    MySQL中创建用户及授权

    除了 GRANT 命令外,还可以直接操作 MySQL 授权表来创建用户和授权。例如: ```sql INSERT INTO user VALUES('localhost','monty',PASSWORD('some_pass'),'Y','Y','Y','Y','Y','Y'); ``` 这条语句直接插入了一个名为...

    mysql的DOS操作入门命令

    通过上述步骤,我们可以轻松地在Windows环境下使用DOS命令对MySQL进行基本操作,包括添加服务、启动/停止服务以及设置或修改密码等。这些命令对于日常维护和管理MySQL数据库非常有用。熟悉这些基础操作可以帮助我们...

Global site tag (gtag.js) - Google Analytics