本文目录一览:
- 1、mysql root无法修改用户权限,root无法操作数据库
- 2、mysql的特点是什么?
- 3、设计一个log类,需要用到mysql中的curd操作,是应该使用继承呢还是组合
- 4、MySQL中MyISAM和InnoDB的区别
mysql root无法修改用户权限,root无法操作数据库
因为之前root安全设置问题,把root的select_priv, update_priv, insert_priv, delete_priv权限都给下掉了。
现在要grant 修改非root用户权限的时候发现修改不了,才发现是root权限的问题。
修改mysql配置文件
mysqld新增skip-grant-tables,wq保存退出
重启mysql服务
进入mysql
查看mysql用户表信息,发现root没有CURD的权限
发现问题直接update,修改它,如果其它权限没了,也可以修改
修改my.cnf,注释掉skip-grant-tables
重启mysql服务
登录root账号,就可以用了
其实和服务器的修改方法一样
查看my.cnf挂载情况,如果已经知道了my.cnf的挂载位置,就不用执行这一步。
找到my.cnf配置文件,这边的挂载到宿主机的配置在/opt/mysql/config/my.cnf
注意 5d15960f2861 是我自己的 CONTAINER ID
如果my.cnf没有挂载出来,那就进容器里面改my.cnf了,注意 5d15960f2861 是我自己的 CONTAINER ID
my.cnf 中的mysqld新增skip-grant-tables,wq保存退出
重启docker mysql服务
进入docker mysql容器的mysql服务
查看mysql用户表信息,发现root没有CURD的权限
发现问题直接update,修改它,如果其它权限没了,也可以修改
修改my.cnf,注释掉skip-grant-tables
重启docker mysql服务
登录root账号,就可以用了
mysql的特点是什么?
一、MySQL数据库的特点和优势:
(1)功能强大
MySQL 中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL5 支持事务、视图、存储过程、触发器等。
(2)支持跨平台
MySQL 支持至少 20 种以上的开发平台,包括 Linux、Windows、FreeBSD 、IBMAIX、AIX、FreeBSD 等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何的修改。
(3)运行速度快
高速是 MySQL 的显著特性。在 MySQL 中,使用了极快的 B 树磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快地实现连接;SQL 函数使用高度优化的类库实现,运行速度极快。
(4)支持面向对象
PHP 支持混合编程方式。编程方式可分为纯粹面向对象、纯粹面向过程、面句对象与面向过程混合 3 种方式。
(5)安全性高
灵活和安全的权限与密码系统,允许基本主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。
(6)成本低
MySQL 数据库开放源代码且无版权制约,是一种完全免费的产品,用户可以直接通过网络下载,自主性及使用成本低。体积小,安装方便。历史悠久,用户使用活跃,遇到问题可以寻求帮助,易于维护。
(7)支持各种开发语言
MySQL 为各种流行的程序设计语言提供支持,为它们提供了很多的 API 函数,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 语言等。
(8)数据库存储容量大
MySQL 数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL 内部限制决定的。InnoDB 存储引擎将 InnoDB 表保存在一个表空间内,该表空间可由数个文件创建,表空间的最大容量为 64TB,可以轻松处理拥有上千万条记录的大型数据库。
(9)支持强大的内置函数
PHP 中提供了大量内置函数,几乎涵盖了 Web 应用开发中的所有功能。它内置了数据库连接、文件上传等功能,MySQL 支持大量的扩展库,如 MySQLi 等,可以为快速开发 Web 应用提供便利。
二、相比其他数据库的特点和优势:
(1) 对事务的提交
MySQL默认是自动提交,不需要在写commit指令或者点击commit按钮。
(2) 分页查询
MySQL是直接在SQL语句中写"select... from ...where...limit m, n",有limit就可以实现分页。PHP里还可以用SEEK定位到结果集的位置。
(3) 事务隔离级别
MySQL是read commited的隔离级别。
一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。
(4) 复制简单
MySQL复制服务器配置简单。
(5) 自动增长的数据类型处理
MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。
(6) 单引号的处理
MYSQL里可以用双引号包起字符串。
(7) 日期字段的处理
MYSQL日期字段分DATE和TIME两种。
(8) 空字符的处理
MYSQL的非空字段也有空的内容,NULL或空字符。
设计一个log类,需要用到mysql中的curd操作,是应该使用继承呢还是组合
原则一:如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B 继承A 的功能
原则二:如果类B 有必要使用A 的功能,则要分两种情况考虑
a、若在逻辑上B 是A 的“一种”(a kind of ),则允许B 继承A 的功能。
b、若在逻辑上A 是B 的“一部分”(a part of),则不允许B 继承A 的功能,而是要用A和其它东西组合出B。
MySQL中MyISAM和InnoDB的区别
MYISAM 表是典型的数据与索引分离存储,主键和二级索引没有本质区别。比如在 MYISAM 表里主键、唯一索引是一样的,没有本质区别。
MYISAM 表的索引存储方式最大的缺点没有按照物理数据行顺序存储,这样无论对主键的检索还是对二级索引的检索都需要进行二次排序。
INNODB 表本身是索引组织表,也就是说索引就是数据。下图表T1的数据行以聚簇索引的方式展示,非叶子节点保存了主键的值,叶子节点保存了主键的值以及对应的数据行,并且每个页有分别指向前后两页的指针。
INNODB 表不同于 MYISAM,INNODB 表有自己的数据页管理,默认 16KB。MYISAM 表数据的管理依赖文件系统,比如文件系统一般默认 4KB,MYISAM 的块大小也是 4KB,MYISAM 表的没有自己的一套崩溃恢复机制,全部依赖于文件系统。
INNODB 表这样设计的优点有两个:
1. 数据按照主键顺序存储。主键的顺序也就是记录行的物理顺序,相比指向数据行指针的存放方式,避免了再次排序。
2. 两个叶子节点分别含有指向前后两个节点的指针,这样在插入新行或者进行页分裂时,只需要移动对应的指针即可。
但是也有缺点:
1. 二级索引由于同时保存了主键值,体积会变大。特别是主键设计不合理的时候,比如用 UUID 做主键。
2. 对二级索引的检索需要检索两次索引树。第一次通过检索二级索引叶子节点,找到过滤行对应的主键值;第二次通过这个主键的值去聚簇索引中查找对应的行。