`

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审计了解用户对mysql的操作

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

    设置mysql用户权限

    设置mysql用户权限

    mysql操作手册.pdf

    mysql操作手册.pdf

    mysql5.7操作文档大全

    2.2.4 删除MySQL用户以及用户组 7 三. 安装MySQL数据库 9 3.1 安装MySQL数据库 9 3.1.1 下载MySQL安装包 9 3.1.2 上传并解压MySQL安装包 9 3.1.3 添加系统MySQL组和MySQL用户 10 3.1.4 安装MySQL数据库 10 3.1.5 ...

    C#连接操作MySQL数据库进行添加、修改、删除、查询等操作的演示

    现本着学习的目的,将c#访问操作MySQL数据库进行添加、删除、修改、显示等操作进行梳理。以Visual Studio 2012平台下的示例形式写下来,供以后查看。 一、新建一个Windows 窗体应用程序Test。 如下图所示: 二、...

    .net framework 4.0 for windows(mysql)&wic_x86_chs&mysql用户基本操作

    MySql用户操作简单说明: 一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用...

    MySQL基本操作手册

    MySQL是一种流行的关系型数据库管理系统,用于存储和管理数据。对于初学者来说,熟悉MySQL的基本操作非常重要,因为这些操作是使用MySQL的基础。...总之,学习MySQL的基本操作手册是成为一名合格的MySQL用户的第一步。

    Linux下mysql常用操作命令总结

    mysql用户本地登录 mysql数据库常用操作 创建存储过程 mysql用户管理 本地数据备份

    mysql操作手册

    mysql操作手册。This is the MySQL™ Reference Manual. It documents MySQL 8.0 through 8.0.14. It may include documentation of features of MySQL versions that have not yet been released. For information ...

    MySQL JDBC 权限操作

    MySQL JDBC 权限操作,授权、回收权限

    MySQL数据库操作手册.doc

    该资源详细介绍了数据库设计数据库及表的操作、数据库单表操作、多表操作、视图、索引、存储引擎、数据库优化等知识

    MySql 图形用户界面工具

    一个不错的MySql工具,操作简单实现,绝对可用!

    MySQL – binlog日志简介及设置

      mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容。 binlog 的作用 用于数据库的主从复制及数据的增量恢复。 ...

    用MFC编写的对mysql数据库的操作

    这是一个在visual studio2008环境用MFC语言对mysql数据库编写的一个简单的学生信息管理系统!如果你要用的话,你必须要安装了mysql,而且用户是root,密码是:123456,因为只供MFC和数据库初学者使用,本资源有可执行...

    MYSQL

    14.1.4 编译并安装用户定义函数 14.2 增加一个新的原生(native)函数 15 为MySQL增加新过程 15.1 analyse过程 15.2 编写一个过程 16 MySQL对 ODBC 支持 16.1 MyODBC 支持的操作系统 ...

    mysql用户界面开发管理工具

    内有激活码 挺好用的mysql工具 让你操作的时候像操作sqlserver一样方便

    mysql 的root 用户无法授权及解决navicat 远程授权提示1044问题

    3,执行以下操作(查询用户的赋权权限,更改赋权权限 ,刷新生效) mysql> select user,host,grant_priv from user; +---------------+-----------+------------+ | user | host | grant_priv | +---------------+--...

    操作mysql数据库的常用命令总结

    操作MySQL数据库的常用命令,连接MYSQL、修改密码、增加新用户、显示命令、 将文本数据转到数据库中、使用SHOW语句找出在服务器上当前存在什么数据库、创建一个数据库MYSQLDATA等等。

    MySQL数据库操作.md

    这个文档可以作为MySQL数据库操作的快速参考指南,帮助用户在实际工作中进行数据库操作。无论是初学者还是有一定经验的用户,都可以通过这个文档更加方便地理解和使用MySQL数据库。文档中的源码经过精心编写,遵循...

    易语言MYSQL操作工具V1.1版.

    易语言MYSQL操作工具V1.1版.MYSQL操作工具,全SQL语句操作工具,可以让用户快速熟悉SQL语句的使用。

Global site tag (gtag.js) - Google Analytics