mysql数据库授权?mysql 如何查看该数据库用户具有哪些权限
本篇文章给大家谈谈mysql数据库授权,以及mysql 如何查看该数据库用户具有哪些权限对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
mysql 如何查看该数据库用户具有哪些权限
1、use mysql
2、SELECT*FROMusers
就可以看到所有的使用者权限
有关db的数据是记录在Db(大小写要注意)这个数据表中,所以只要呼叫出Db的资料SELECT*FROMDb就可以看到你要的答案。
或者可以用:
SELECT*FROMDbWHEREDb='phplampDB'找出你要的答案
授予MySQL用户权限的语句
show grants for你的用户
比如:show grants for root@'localhost';
Grant用法:
GRANT USAGE ON*.* TO'discuz'@'localhost' IDENTIFIED BY PASSWORD
'*C242DDD213BE9C6F8DA28D49245BF69FC79A86EB';
GRANT ALL PRIVILEGES ON `discuz`.* TO'discuz'@'localhost';
建立一个只可以在本地登陆的不能操作的用用户名 discuz密码为*****已经加密了的
然后第二句的意思是,给这个discuz用户操作discuz数据库的所有权限
使用GRANT
GRANT命令用来建立新用户,指定用户口令并增加用户权限。其格式如下:
mysql> GRANT<privileges> ON<what>
-> TO<user> [IDENTIFIED BY"<password>"]
-> [WITH GRANT OPTION];
mysql数据库有几张授权表
mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。
授权表的内容有如下用途:
·user表
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。
·db表
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。
·host表
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。
·tables_priv表
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。
·columns_priv表
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。
mysql怎么授予创建数据库的权限
MySQL命令行能否实现新建用户呢?答案无疑是肯定的。而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限。
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。
注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
用户:phplamp
用户数据库:phplampDB
1.MySQL命令行新建用户
//登录MYSQL
@>mysql-u root-p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values('localhost','phplamp',password('1234'));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:phplamp密码为:1234的用户。
//退出后登录一下
mysql>exit;
@>mysql-u phplamp-p
@>输入密码
mysql>登录成功
2.MySQL命令行为用户授权
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql-u root-p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限
@>grant all privileges on phplampDB.* to phplamp@localhost identified by'1234';//这里需要注意,如果发现找不到用户,需要执行命令 flush privilieges;
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作
//如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on phplampDB.* to phplamp@localhost identified by'1234';
//刷新系统权限表。
mysql>flush privileges;
mysql> grant权限1,权限2,…权限n on数据库名称.表名称 to用户名@用户地址 identified by‘连接口令’;
权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。
例如:
mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on*.* to joe@10.163.225.87 identified by‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on*.* to joe@localhost identified by‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
如何给MySql创建连接用户并授权
一般在为MySql创建用户时建议使用GRANT前台命令,当然如果对我们开发者而言,方法还有很多种,比如使用INSERT命令,甚至是直接修改mysql user数据表,但仍然建议按照MySQL规范去授权账户。因为它太容易忘记,特别整理方便参考。
1、登录MySQL
输入mysql-u root和密码即可登录到Mysql。
2、选择数据库
语句如下:use mysql;
3、在mysql的user表中增加连接用户
GRANT USAGE ON*.* TO'username'@'localhost' IDENTIFIED BY'password' WITH GRANT OPTION;
其中:
“username”替换为将要授权的用户名,比如clientusr;
“password”替换为clientusr设置的密码;
4、可访问数据表授权
创建好帐户之后,就开始给上面的common user进行数据表授权,步骤3中增加的连接用户默认权限都是“N”的,必须在db表中为该帐户授权,允许其访问专用数据库,当然超级用户就不说了。
使用下面语句:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON dbx.* TO'username'@'localhost' IDENTIFIED BY'password';
本语句中的权限根据实际需要确定:
"dbx"替换为授权访问的数据库名,如果只给某张表授权:dbx.tablename
"username"是步骤2授权用户名
"password"是步骤2授权用户的设置密码
这样就为该用户授予了对某数据表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP权限。
5、生效授权,创建完毕
FLUSH PRIVILEGES;
备注:
1、不要直接使用INSERT语句添加user记录,使用INSERT可能出现:ERROR 1364(HY000): Field'ssl_cipher' doesn't have a default value错误。不过早期的MYSQL版本笔者倒没出现这个错误,因为天缘一直都是直接修改user表或直接使用INSERT语句完成,后来升级MYSQL到5.1的时候,发现可能会出现这个错误。
2、上文3和4,也可使用一句话GRANT ALL ON tbx.* TO'username' IDENTIFIED BY'password',这句话会自动创建username并为之授权。更多授权权限可参考MYSQL官方网站。
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!