- 浏览: 128973 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zzzhenyu:
您好,我现在也遇到了同样的问题,请问你后来知道为什么了吗?
error at ::0 can't find referenced pointcut allMethod
向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账户:
• 使用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
发表评论
-
mysqldump导出数据库并转码
2012-05-17 21:00 2132使用mysqldump时,如果没有设置编码,将按照mysql配 ... -
mysql用户授权操作
2012-04-28 20:18 1115mysql 对用户授权的操作 grant 权限 ... -
MySQL中Index与Key的区别
2012-04-02 17:46 754看似有差不多的作用,加了Key的表与建立了Index的表,都可 ... -
MySQL添加删除主键的操作方法介绍
2012-04-02 10:46 771mysql添加删除主键 操作是非常基本的操作,下面就将教您m ... -
MYSQL引擎与字符设置
2012-04-02 09:45 849当年创建一个新表的时候,你可以通过添加一个ENGINE 或TY ... -
从SQL Server 2000向MYSQL5.1导入数据
2012-04-01 11:29 9031、在Sql Server 2000中选中右击所要导出的数据库 ... -
LOAD DATA INFILE语法
2012-03-31 15:33 1101013.2.5. LOAD DATA INFILE语法 ... -
mysql 修改已存在的表增加ID属性为auto_increment自动增长
2012-03-31 15:24 2479今天有需要将已经存在表设置自动增长属性 具体如下 al ... -
指定mysql的max_allowed_packet大小
2012-03-30 17:39 1094max-allowed-packet max_allow ... -
在MYSQL中使用全文索引(FULLTEXT index)
2012-03-30 17:25 1188MYSQL的一个很有用的特性是使用全文索引(FULLTEXT ... -
mysql 5修改字符集
2012-03-29 14:58 761查看编码: show variables like 'co ... -
MySQL数据库备份和还原的常用命令
2012-03-28 11:24 653备份MySQL数据库的命令 mysqldump -h ... -
MySQL关与大小写问题
2012-03-21 20:16 1029MySQL在Linux下数据库名、表名、列名、 ... -
linux centos 开启80、22、3306端口
2012-03-21 17:12 12891、设定 [root@localhost ~]# /sbin ... -
让MySql在Linux下不区分大小写
2012-02-20 17:03 1005开发某程序,原先运行正常,但数据库布署在Linux上则在使 ... -
mysql查看表结构命令
2011-12-14 11:42 722mysql查看表结构命令,如下: desc 表名; sho ...
相关推荐
MySQL 5.7 操作手册中文版 MySQL 5.7 是一个功能强大且广泛使用的关系数据库管理系统。该手册提供了 MySQL 5.7 的详细使用指南,涵盖了安装、配置、管理、优化等方面的内容。 安装和升级 MySQL MySQL 5.7 提供了...
授予用户 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 -h ...
总的来说,MySQL审计是数据库管理的重要组成部分,通过对用户操作的详细记录,提供了一种有效的监控和保护机制。正确配置和使用审计功能,可以帮助管理员及时发现潜在的问题,提升数据库的安全性和稳定性。
- `ON *.*`表示对所有数据库中的所有表进行操作。 - `'root'@'%'`表示用户名为`root`,可以从任意主机(`%`)连接。 - `WITH GRANT OPTION`表示被授权的用户也可以授予其他用户同样的权限。 如果只想允许用户从...
在本实例中,我们将探讨如何使用JSP(JavaServer Pages)与MySQL数据库进行交互,实现基本的Web应用程序功能,如用户注册、登录、数据增删改查等。这个压缩包包含了一个简单的Web应用实例,提供了所需的JDBC驱动以及...
例如,使用root用户登录Mysql服务器: ``` C:program filesmysqlmysql server 4.1bin>mysql -u root -p Enter password: ``` 输入用户名和密码后,回车键确认输入,等待出现"Enter password:"提示,然后输入密码回车...
MySQL可视化操作工具是数据库管理员和开发人员常用的辅助软件,它以图形化界面提供对MySQL数据库的管理和操作,使得用户无需通过命令行即可进行数据查询、编辑、管理等操作。这样的工具提高了工作效率,降低了操作...
本文详细介绍了如何在 Linux 操作系统中安装 MySQL 数据库,包括下载安装包、解压缩安装包、创建 mysql 组和用户、初始化数据库文件、设置权限、启动服务、设置密码等步骤。通过这些步骤,我们可以成功地安装 MySQL ...
总之,“vc 操作mysql数据库”是一个涵盖数据库连接、查询、用户交互和事务处理等多个技术点的综合实践。通过这个DEMO,开发者可以学习如何在Windows应用中集成MySQL数据库,为用户提供数据管理功能。同时,这也提醒...
- **MySQL 论坛**:这是一个社区支持平台,用户可以在这里与其他MySQL用户交流使用过程中遇到的问题。 - **MySQL 邮件列表**:提供了一个讨论MySQL技术问题的邮件组,适合深入的技术交流。 - **MySQL 社区支持**:...
2. MySQL用户授权及撤销 用户授权和撤销是数据库管理中另一个重要的方面,这允许管理员控制不同用户对数据库的访问权限。 2.1 用户授权 为了给予用户访问数据库的权限,管理员需要执行授权操作。授权的基本语句...
### Excel VBA 操作 MySQL 全面指南 #### 一、准备工作 在开始使用 Excel VBA 来操作 MySQL 数据库之前,需要进行一系列的基础配置工作。以下步骤将帮助您完成必要的准备工作。 **1. MySQL 简介** MySQL 是一个...
MySQL图形化操作界面是数据库管理的一种直观方式,它为用户提供了友好的图形界面,使得数据库的管理和操作变得更加简单。在数据库管理系统(如MySQL)中,这些工具通常包括数据浏览、查询构建、表设计、备份与恢复、...
- **删除MySQL用户以及用户组**:使用`id mysql`查看MySQL用户及其所属组,并使用`userdel mysql`命令删除这些用户及组。 #### 三、安装MySQL数据库 - **下载MySQL安装包**:从MySQL官方网站下载适合Linux环境的二...
Linux 操作 MySQL 的基本命令是 MySQL 数据库管理的基础,了解这些命令可以帮助用户更好地管理和维护 MySQL 数据库。 1. 创建 mysqld 数据库的管理用户 在 Linux 下创建 mysqld 数据库的管理用户,可以使用以下...
MySQL可视化操作插件是数据库管理中的重要工具,它为用户提供了直观、易用的图形界面,使得数据库的管理和操作变得更加简单。Navicat8_mysql_cs是这样一款专为MySQL设计的可视化工具,它包含了多种功能,帮助用户...
2. MySQL服务器:安装并配置好MySQL服务,创建所需的数据库和用户。 3. MySQL驱动:Qt需要连接到MySQL,所以我们需要安装`libmysqlclient`(或在Windows上是`qmysql`驱动)。 接下来,我们将分步骤讲解如何构建这个...
除了 GRANT 命令外,还可以直接操作 MySQL 授权表来创建用户和授权。例如: ```sql INSERT INTO user VALUES('localhost','monty',PASSWORD('some_pass'),'Y','Y','Y','Y','Y','Y'); ``` 这条语句直接插入了一个名为...