1.查看mysql的当前登陆用户
命令:select user();
select current_user();
mysql> select user();
mysql> select current_user();
2.查看当前用户权限
命令:show grants;
mysql> show grants;
3.查看其它用户权限
命令:show grants for user@host;(user:用户名,host:主机地址)
mysql> show grants for root@localhost;
4.创建用户并授权
命令:GRANT ON TO [IDENTIFIED BY ""] [WITH GRANT OPTION];
是一个用逗号分隔的你想要赋予的权限的列表。你可以指定的权限可以分为三种类型,如下:
数据库/数据表/数据列权限:
Alter: 修改已存在的数据表(例如增加/删除列)和索引;
Create: 建立新的数据库或数据表;
Delete: 删除表的记录;
Drop: 删除数据表或数据库;
INDEX: 建立或删除索引;
Insert: 增加表的记录;
Select: 显示/搜索表的记录;
Update: 修改表中已存在的记录。
全局管理权限:
file: 在MySQL服务器上读写文件;
PROCESS: 显示或杀死属于其它用户的服务线程;
RELOAD: 重载访问控制表,刷新日志等;
SHUTDOWN: 关闭MySQL服务。
特别的权限:
ALL: 允许做任何事(和root一样);
USAGE: 只允许登录--其它什么也不允许做。
定义了这些权限所作用的区域。
*.*意味着权限对所有数据库和数据表有效;
dbName.*意味着对名为dbName的数据库中的所有数据表有效;
dbName.tblName意味着仅对名为dbName中的名为tblName的数据表有效;
你甚至还可以在赋予的权限后面的圆括号中用逗号分隔表的字段对特定的字段赋予权限。
指定可以应用这些权限的用户。
一个用户通过它登录的用户名和用户使用的计算机的主机名/IP地址来指定,这两个值都可以使用%通配符(例如:root@%将允许使用用户名root从任何机器上登录以享有你指定的权限)。
指定了用户连接MySQL服务所用的口令。
它被用方括号括起,说明IDENTIFIED BY ""在GRANT命令中是可选项。这里指定的口令会取代用户原来的密码。如果没有为一个新用户指定口令,当他进行连接时就不需要口令。
[WITH GRANT OPTION] 可选的,指定了用户可以使用GRANT/REVOKE命令将他拥有的权限赋予其他用户。请小心使用这项功能--虽然这个问题可能不是那么明显!例如,两个 都拥有这个功能的用户可能会相互共享他们的权限,这也许不是你当初想看到的。
实例一:建立一个名为mytest的用户,他可以使用口令mytest从localhost连接mysql,并仅仅可以对名为mydb的数据库的全部内容进行操作(并可以将此权限赋予其他用户)
mysql> GRANT ALL ON mydb.*
-> TO mytest@localhost
-> IDENTIFIED BY "mytest"
-> WITH GRANT OPTION;
实例二:现在改变这个用户的口令为123456,命令格式如下:
mysql> GRANT USAGE ON mydb.*
-> TO mytest@localhost
-> IDENTIFIED BY "123456";
注意:我们没有赋予任何另外的权限(the USAGE权限只能允许用户登录),但是用户已经存在的权限不会被改变。
实例三:我们建立一个新的名为test01的用户,他可以从test01.taosteel.cn域的任意机器连接到MySQL。他可以更新 mydb数据库中users表的username字段和email字段,但是不需要查阅其它的信息。也就是说他对mydb数据库中的user表具有只读的 权限(Select),但是他可以对users表的username字段和email字段执行Update操作。
mysql> GRANT select ON mydb.users
-> TO test01@test01.taosteel.cn
-> IDENTIFIED BY "123456";
mysql> GRANT update(username, email)
-> ON mydb.users
-> TO test01@test01.taosteel.cn;
其它实例:
mysql> grant all on mydb.* to 'mytest'@'%' identified by 'mytest'; 允许从任何主机连接
注:"%"字符起通配符作用
mysql> grant all on mydb.* to 'mytest'@%.test.cn identified by 'mytest';允许mytest从test.cn域的任何主机连接
mysql> grant all on mydb.* to 'mytest'@'192.168.1.189' identified by 'mytest';
mysql> grant all on mydb.* to 'mytest'@'192.168.1.%' identified by 'mytest';
mysql> grant all on mydb.* to 'mytest'@'192.168.1.0/17' identified by 'mytest';
允许从单IP、段IP、或一子网IP登陆
5.撤销用户权限
命令:revoke (columns) on from ;
revoke语句只删权限不删用户,用户仍然可以连接服务器。
要完全删除一个用户必须用一条delete语句明确从user表中删除用户记录,如下:
delete from user where user='mytest';
flush privileges; 重载授权表
Mysql创建、删除用户
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):
1.新建用户
登录MYSQL:
@>mysql -u root -p
@>密码
创建用户:
mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
这样就创建了一个名为:test 密码为:1234 的用户。
注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
然后登录一下:
mysql>exit;
@>mysql -u test -p
@>输入密码
mysql>登录成功
2.为用户授权
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
登录MYSQL(有ROOT权限),这里以ROOT身份登录:
@>mysql -u root -p
@>密码
首先为用户创建一个数据库(testDB):
mysql>create database testDB;
授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):
mysql>grant all privileges on testDB.* to test@localhost identified by '1234';
mysql>flush privileges;//刷新系统权限表
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on testDB.* to test@localhost identified by '1234';
mysql>flush privileges; //刷新系统权限表
授权test用户拥有所有数据库的某些权限:
mysql>grant 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';即可。
3.删除用户
@>mysql -u root -p
@>密码
mysql>Delete FROM user Where User='test' and Host='localhost';
mysql>flush privileges;
mysql>drop database testDB; //删除用户的数据库
删除账户及权限:>drop user 用户名@'%';
>drop user 用户名@ localhost;
4.修改指定用户密码
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password('新密码') where User="test" and Host="localhost";
mysql>flush privileges;
5.列出所有数据库
mysql>show database;
6.切换数据库
mysql>use '数据库名';
7.列出所有表
mysql>show tables;
8.显示数据表结构
mysql>describe 表名;
9.删除数据库和数据表
mysql>drop database 数据库名;
mysql>drop table 数据表名;