背景
创新互联-专业网站定制、快速模板网站建设、高性价比明溪网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式明溪网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖明溪地区。费用合理售后完善,十载实体公司更值得信赖。
在了解动态权限之前,我们先回顾下 MySQL 的权限列表。
权限列表大体分为服务级别和表级别,列级别以及大而广的角色(也是MySQL 8.0 新增)存储程序等权限。我们看到有一个特殊的 SUPER 权限,可以做好多个操作。比如 SET 变量,在从机重新指定相关主机信息以及清理二进制日志等。那这里可以看到,SUPER 有点太过强大,导致了仅仅想实现子权限变得十分困难,比如用户只能 SET 变量,其他的都不想要。那么 MySQL 8.0 之前没法实现,权限的细分不够明确,容易让非法用户钻空子。
那么 MySQL 8.0 把权限细分为静态权限和动态权限,下面我画了两张详细的区分图,图 1 为静态权限,图 2 为动态权限。
图 1- MySQL 静态权限的权限管理图
图 2-动态权限图
那我们看到其实动态权限就是对 SUPER 权限的细分。 SUPER 权限在未来将会被废弃掉。
我们来看个简单的例子,
比如, 用户 'ytt2@localhost', 有 SUPER 权限。
mysql show grants for ytt2@'localhost';+---------------------------------------------------------------------------------+| Grants for ytt2@localhost |+---------------------------------------------------------------------------------+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON *.* TO ytt2@localhost |+---------------------------------------------------------------------------------+1 row in set (0.00 sec)
但是现在我只想这个用户有 SUPER 的子集,设置变量的权限。那么单独给这个用户赋予两个能设置系统变量的动态权限,完了把 SUPER 给拿掉。
mysql grant session_variables_admin,system_variables_admin on *.* to ytt2@'localhost';Query OK, 0 rows affected (0.03 sec)mysql revoke super on *.* from ytt2@'localhost';Query OK, 0 rows affected, 1 warning (0.02 sec)
我们看到这个 WARNINGS 提示 SUPER 已经废弃了。
mysql show warnings;
+---------+------+----------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------+
| Warning | 1287 | The SUPER privilege identifier is deprecated |
+---------+------+----------------------------------------------+
1 row in set (0.00 sec)`
mysql show grants for ytt2@'localhost';
+-----------------------------------------------------------------------------------+
| Grants for ytt2@localhost |
+-----------------------------------------------------------------------------------+
| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO ytt2@localhost |
| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO ytt2@localhost |
+-----------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
当然图 2 上还有其它的动态权限,这里就不做特别说明了。
MySQL的用法如下:
一、准备工作:
1、打开任务管理器,启动MySQL服务(点击开始即可)。
2、打开下载好的连接工具Navicat,选择要连接的数据库(MySQL),弹出MySQL-新建连接窗口,点击测试连接,出现连接成功,点击确定。
二、新建数据库:
在连接好的MySQL连接上点击右键,选择新建数据库,弹出新建数据库窗口后,取数据库名,输入字符集为utf8,输入排序规则为utf8_icelandic_ci,点击确定,即可创建成功。
三、新建数据库表:
在表上点击右键,选择新建表,添加字段,设置标识列(勾选自动递增)。
四、导入数据库表:
准备一张要导入MySQL数据库的表:在表上点击右键,选择运行SQL文件,弹出运行SQL文件,选择数据库表的位置,找到你要导入的表,点击开始完成导入,然后关闭即可。再次在表上点击右键,选择刷新,完成表的导入。
五、写sql语句:
点击新建查询,然后选择要连接的数据库和表,即可尽情打代码啦!!!
1、 mysql安装好后,在mysql的安装目录中有个bin目录,里面有很多客户端软件,如果是mysql的客户端,找到mysql.exe,这个是用于操作数据库的系统客户端软件。
2、 客户端选择:一般情况下,我们在学习的时候会通过使用Windows下的控制台进行访问,即win + R 同时按住打开运行,输入cmd命令进入控制台,然后进入到mysql的bin目录(具体可以看一下Windows下控制器切换路径(百度经验));或者在开发的时候通常会使用一些集成工具,如Navicat之类。
3、 数据库操作步骤:学习的时候客户端和服务端是同时安装的,都在一台电脑上,但是要理解,mysql的客户端和服务端通常不会在一台机器上的(服务器在机房,客户端就在个人电脑上),因此是需要进行一些步骤操作的。(下面以windows下的控制台为例)
① 连接认证:mysql/mysql.exe -h主机地址 -P端口 -u用户名 -p密码,其中h可以是ip地址也可以是主机名如-hlocalhost/-h127.0.0.1,本地可以省略;-P(大写P)是端口,一般mysql是3306,默认可以省略;-u是用户名,如果没有匿名账号,必填;-p(小写p)是密码,一般必填,最好是输入-p后先回车,后输入密码(密文输入密码,更安全)
② 发送SQL指令,SQL(【百科】结构化查询语言Structured Query Language结构化查询语言)是mysql能识别的操作指令,这块如果想深入学习理解可以参照MySQL的API文档或者参考黑马程序员下的6天玩转MySQL,一般情况下分为几大类:
DDL:Data Definition Language,数据定义语言,定义结构。如创建数据库:create database `test` charset utf8;
DML:Data Manipulation Language,数据操作语言,进行数据操作。如增删改查指令:insert into table values()/delete from table where condition/update table set key = value/select * from table
DCL:Data Controller Language,数据控制语言,进行权限管理。如给用户授权:grant seletet on *.* to 'root'@localhost
③ 解析:一般情况下客户端会自动解析MySQL服务器执行返回的结果不需要我们进行额外操作,但是如果是其他编程语言需要使用MySQL执行的结果,那么还需要额外的解析(参照黑马程序员6天玩转MySQL中的PHP操作mysql)
④ 断开连接:数据库用完之后,要养成主动断开的习惯(被动也可以,但是如果被动没有断开,那么就会“占线”),mysql的客户端可以使用\q | quit | exit,任意一个退出
windows下还是linux下?
windows下:
1.开始中找出运行:输入cmd
2.查找mysql所在盘,我的在D盘,所以接着输入:d:
3.在d盘中查找mysql所在目录:cd appserv\mysql\bin
4.再输入主机名、数据库名、密码:mysql -h localhost -u root -p
5.最后输入数据库密码