重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的钦州网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
1.新建用户
1.1 登录MYSQL:
@mysql -u root -p
@密码
1.2 创建用户:
mysql insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
这样就创建了一个名为:test 密码为:1234 的用户。
注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
1.3 然后登录一下:
mysqlexit;
@mysql -u test -p
@输入密码
mysql登录成功
2.为用户授权
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录:
@mysql -u root -p
@密码
2.2 首先为用户创建一个数据库(testDB):
mysqlcreate database testDB;
2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):
mysqlgrant all privileges on testDB.* to test@localhost identified by '1234';
mysqlflush privileges;//刷新系统权限表
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2.4 如果想指定部分权限给一用户,可以这样来写:
mysqlgrant select,update on testDB.* to test@localhost identified by '1234';
mysqlflush privileges; //刷新系统权限表
2.5 授权test用户拥有所有数据库的某些权限:
mysqlgrant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
//test用户对所有数据库都有select,delete,update,create,drop 权限。
//@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)
//对localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。
MySQL新建用户,授权,删去用户,修改密码操作
测试环境:WIN32 mysql5.0.45
首先要声明一下:一般环境下,修改MySQL密码,授权,是需要有mysql里的root职权范围的。
注:本操作是在WIN号令提示符下,phpMyAdmin一样适用。
用户:phplamp用户数值库:phplampDB
1.新建用户。
//登录MYSQL
@mysql -u root -p
@密码
//创立用户
mysql insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
//按F5体系职权范围表
mysqlflush privileges;
这样就创立了一个名为:phplamp密码为:1234的用户。
然后登录一下。
mysqlexit;
@mysql -u phplamp -p
@输入密码
mysql登录成功
2.为用户授权。
//登录MYSQL(有ROOT职权范围)。我里我以ROOT身份登录.
@mysql -u root -p
@密码
//首先为用户创立一个数值库(phplampDB)
mysqlcreate database phplampDB;
//授权phplamp用户拥有phplamp数值库的所有职权范围。
grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
//按F5体系职权范围表
mysqlflush privileges;
mysql其它操作
/*
如果想指定部分职权范围给一用户,可以这样来写:
mysqlgrant select,update on phplampDB.* to phplamp@localhost identified by '1234';
//按F5体系职权范围表。
mysqlflush privileges;
*/
3.删去用户。
@mysql -u root -p
@密码
mysqlDELETE FROM user WHERE User="phplamp" and Host="localhost";
mysqlflush privileges;
//删去用户的数值库
mysqldrop database phplampDB;
4.修改指定用户密码。
@mysql -u root -p
@密码
mysqlupdate mysql.user set password=password('新密码') where User="phplamp" and Host="localhost";
mysqlflush privileges;
-------------------------------------------------- --------------------------------------------------- -----------
mysql有几个图形办理软件很好用,好比mysql-front ,phpadmin等等,简单易用,这里就不做先容了。别的eclipse有个数值库办理的插件叫,可以对各类常用的数值库进行图形办理,也很好用。
下面步入正题,先容下sql常用操作:
创立库表和查询插入删去记录的操作熟稔,就不作先容了。这里主要说一下对用户和密码的操作,这些操作也很重要,尤其在刚启用数值库时颇有用。
登录MYSQL
mysql -u root -p
密码
创立用户
mysql mysql insert into mysql.user(Host,User,Password,ssl_cipher,x509_issu er,x509_sub
ject) values("localhost","fred",password("love"),'','',' ');
创立后的用户名为:fred 密码为:love
创立数值库(test)
mysqlcreate database test;
将test数值库的所有职权范围授权给用户fred
grant all privileges on test.* to fred@localhost identified by 'love';
按F5体系职权范围表
mysqlflush privileges;
如果想指定部分职权范围给一用户,可以这样来写:
mysqlgrant select,update on phplampDB.* to fred@localhost identified by 'love';
按F5体系职权范围表。
mysqlflush privileges;
修改指定用户密码。
mysql -u root -p
密码
mysqlupdate mysql.user set password=password('新密码') where User="fred" and Host="localhost";
mysqlflush privileges;
删去用户。
mysql -u root -p
密码
mysqlDELETE FROM user WHERE User="fred" and Host="localhost";
mysqlflush privileges;
删去用户的数值库
mysqldrop database test;
其它一些有用的操作:
列出所有数值库
mysqlshow database;
切换数值库
mysqluse '数值库名';
列出所有表
mysqlshow tables;
预示数值表布局
mysqldescribe 表名;
删去数值库和数值表
mysqldrop database 数值库名;
mysqldrop table 数值表名;
有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目录找到这些实用程序。
首先以root身份登录到MySQL服务器中。
$ mysql -u root -p
当验证提示出现的时候,输入MySQL的root帐号的密码。
创建一个MySQL用户
使用如下命令创建一个用户名和密码分别为"myuser"和"mypassword"的用户。
mysql CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
一旦用户被创建后,包括加密的密码、权限和资源限制在内的所有帐号细节都会被存储在一个名为user的表中,这个表则存在于mysql这个特殊的数据库里。
运行下列命令,验证帐号是否创建成功
mysql SELECT host, user, password FROM mysql.user WHERE user='myuser';
赋予MySQL用户权限
一个新建的MySQL用户没有任何访问权限,这就意味着你不能在MySQL数据库中进行任何操作。你得赋予用户必要的权限。以下是一些可用的权限:
ALL: 所有可用的权限
CREATE: 创建库、表和索引
LOCK_TABLES: 锁定表
ALTER: 修改表
DELETE: 删除表
INSERT: 插入表或列
SELECT: 检索表或列的数据
CREATE_VIEW: 创建视图
SHOW_DATABASES: 列出数据库
DROP: 删除库、表和视图
运行以下命令赋予"myuser"用户特定权限。
mysql GRANT privileges ON database.table TO 'myuser'@'localhost';
以上命令中,privileges 代表着用逗号分隔的权限列表。如果你想要将权限赋予任意数据库(或表),那么使用星号(*)来代替数据库(或表)的名字。
例如,为所有数据库/表赋予 CREATE 和 INSERT 权限:
mysql GRANT CREATE, INSERT ON *.* TO 'myuser'@'localhost';
验证给用户赋予的全权限:
mysql SHOW GRANTS FOR 'myuser'@'localhost';
将全部的权限赋予所有数据库/表:
mysql GRANT ALL ON *.* TO 'myuser'@'localhost';
你也可以将用户现有的权限删除。使用以下命令废除"myuser"帐号的现有权限:
mysql REVOKE privileges ON database.table FROM 'myuser'@'localhost';
为用户添加资源限制
在MySQL中,你可以为单独的用户设置MySQL的资源使用限制。可用的资源限制如下:
MAX_QUERIES_PER_HOUR: 允许的每小时最大请求数量
MAX_UPDATES_PER_HOUR: 允许的每小时最大更新数量
MAX_CONNECTIONS_PER_HOUR: 允许的每小时最大连接(LCTT译注:其与 MySQL全局变量: max_user_connections 共同决定用户到数据库的同时连接数量)数量
MAX_USER_CONNECTIONS: 对服务器的同时连接量
使用以下命令为"myuser"帐号增加一个资源限制:
mysql GRANT USAGE ON database.table TO 'myuser'@'localhost' WITH resource-limits;
在 resource-limits 中你可以指定多个使用空格分隔开的资源限制。
例如,增加 MAXQUERIESPERHOUR 和 MAXCONNECTIONSPERHOUR 资源限制:
mysql GRANT USAGE ON *.* TO 'myuser'@'localhost' WITH MAX_QUERIES_PER_HOUR 30 MAX_CONNECTIONS_PER_HOUR 6;
验证用户的资源限制:
mysql SHOW GRANTS FOR 'myuser'@'localhost;
创建和设置一个MySQL用户最后的一个重要步骤:
mysql FLUSH PRIVILEGES;
如此一来更改便生效了。现在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,没有密码。该账户只用于从本机连接。授予了RELOAD和PROCESS管理权限。这些权限允许admin用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-xxx命令,以及mysqladmin processlist。未授予访问数据库的权限。你可以通过GRANT语句添加此类权限。
· 一个账户有用户名dummy,没有密码。该账户只用于从本机连接。未授予权限。通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为'N'。假定你将在以后将具体权限授予该账户。