玖叶教程网

前端编程开发入门

「MySql学习」MySql学习系列之用户与权限管理

数据库安装了之后,如何去连接数据库,创建用户呢?下面,我们以使用命令执行的方式来介绍 Mysql 的常用操作。

1、 连接MySQL

① 连接到本机上的Mysql。

首先打开DOS窗口,进入Mysql的安装目录 mysql\bin 下,键入命令:

mysql -uroot -pdir13652

-u 后接用户名,可以有空格、也可以没有, -p 后接密码,必须没有空格

② 连接到远程主机上的Mysql。

假设远程主机ip 为 192.168.1.1,用户名为root,密码为 dir13652 ,则键入命令:

mysql -h192.168.1.1 -uroot -pdir13652

③ 退出mysql 连接: exit

2、修改root用户密码

mysql 默认安装后,生成一个超级用户:root , 给root 用户设置密码的方法有:

A) mysqladmin -uroot -p dir13652 password ‘newpassword’;
B) update user set password=password(’newpassword’) where user=’root’;

3、增加新用户

在连接Mysql之后,目前还未使用任何数据库,需要切换到要使用的数据库。

用户管理在MySQL 自带数据库 mysql 的 user 表

mysql> use mysql; #

切换到数据库

mysql> select host,user,password from user; #

可以查看数据库中的用户。

① 创建用户

mysql> create user ppnie identified by 'ppnie123'; #

创建用户,identified by 会将纯文本密码加密作为散列值存储。

你也可以使用Grant语句增加新用户:

mysql> GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'something' WITH GRANT OPTION; //admin

用户授权通过本地机(localhost)访问,WITH GRANT OPTION 是权限允许传播

mysql> GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'something' WITH GRANT OPTION; //授予admin用户从任何其它主机发起的访问(通配符%)

mysql> grant select,update,delete on mysql.* to ppnie identified by 'ppnie'; //

默认通配符为%,你还可以直接在 mysql.user 中插入数据还新增用户。

② 更改用户

mysql> rename user ppnie to ppnie123; #

更改用户ppnie 为ppnie123

③ 更改用户密码

mysql> set password for ppnie123 = password('ppnie'); #

更改用户ppnie123的密码为 ppnie

mysql> update mysql.user set password=password('ppnie123') where user='ppnie123';

4、给用户赋权限

语句:grant select [,delete,update,insert] on 数据库名.表名 to 用户
如:

grant select on mysql.user to ppnie123;
grant select,update,delete on *.* to ppnie123; # *.*

表示所有数据库的所有表

grant all privileges on *.* to ppnie123; #

所有权限

移除用户的某个权限

语句: revoke 权限 on 数据库名.表名 from 用户

如:

revoke select on mysql.user from ppnie123;

如果想立即看到结果使用flush privileges ;命令更新,或重启数据库
设置权限时必须给出一下信息
1,要授予的权限
2,被授予访问权限的数据库或表
3,用户名
grant和revoke可以在几个层次上控制访问权限
1,整个服务器,使用 grant ALL 和revoke ALL
2,整个数据库,使用on database.*
3,特点表,使用on database.table
4,特定的列
5,特定的存储过程
实例演示:

mysql> show grants for ppnie123; //

查看用户权限

+---------------------------------------------------------------------------------------------------------+
Grants for ppnie123@%
+---------------------------------------------------------------------------------------------------------+
GRANT USAGE ON *.* TO 'ppnie123'@'%' IDENTIFIED BY PASSWORD '*6A16440239A35FB9130A2B543AAE506BBF9C5D0E'
+---------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Usage 无权限

使用用户ppnie123 连接数据库

>mysql -uppnie123 -pppnie
mysql> show databases; //

显示当前用户的数据库

+--------------------+
Database
 +--------------------+
information_schema
+--------------------+
1 row in set (0.06 sec)

查询数据库 mysql下的表

mysql> select user from mysql.user; //

查询数据库mysql下的表,结果显示无权限

ERROR 1142 (42000): SELECT command denied to user 'ppnie123'@'localhost' for table 'user'

使用root 用户连接数据库

mysql> grant select on mysql.user to ppnie123; //

给ppnie123 赋予查询mysql.user 表的权限

Query OK, 0 rows affected (0.04 sec)

再一次连接ppnie123 用户,查询权限

mysql> show grants for ppnie123;
+---------------------------------------------------------------------------------------------------------+
Grants for ppnie123@%
+---------------------------------------------------------------------------------------------------------+
GRANT USAGE ON *.* TO 'ppnie123'@'%' IDENTIFIED BY PASSWORD *6A16440239A35FB9130A2B543AAE506BBF9C5D0E'
GRANT SELECT ON `mysql`.`user` TO 'ppnie123'@'%'
+--------------------------------------------------------------------------------------------------------+

你会发现用户可以查询 mysql.user 表了。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言