1.1 mysql用户权限相关
1.1.1 权限授予
GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@‘来源地址’ [IDENTIFIED BY ‘密码’];
允许用户company在所有终端查询hrm数据库下的所有表。
GRANT select ON hrm.* TO ‘company’@‘%’ [IDENTIFIED BY ‘123456]’;
允许用户company在所有终端对数据库hrm执行所有操作
GRANT ALL ON hrm.* TO ‘company’@‘%’ [IDENTIFIED BY ‘123456]’;
set global validate_password.policy=0;(把密码限制调低)
set global validate_password.length=4;(把密码限制字数调低)
CREATE USER ‘newuser’@‘localhost’ IDENTIFIED BY ‘password’; 新增用户
ALTER USER ‘warren’@‘localhost’ IDENTIFIED BY ‘toor’; 修改用户
注意 所有授权操作完成后 都需要刷新权限!
flush privileges;
1.1.2 权限查看
show grants for 用户 下面是例子
1.1.3 3306端口的开发
- systemctl status firewalld 检查防火墙是否开启
- systemctl start firewalld 没有运行就执行这句
- firewall-cmd --permanent --add-port=3306/tcp 添加端口3306
- firewall-cmd --reload 刷新后才生效
- firewall-cmd --list-ports 检查是否开启
1.2 利用EXPLAIN进行性能分析
主要就是查询语句前面加入关键字EXPLAIN。
通过上述关键字,我们可以获取表的读取顺序、操作类型、可以使用的索引以及时间用到的索引等重要数据,通过这个就可以看出本条sql是否达到最佳性能!
下面是例子:
上面得出的结果中有12个字段:
下面对比较重要的字段进行说明:
- id 查询的序列号 表示查询中执行select子句或操作表的顺序
- type 查询使用类型 从好到差依次是system > const > eq_ref > ref > range > index > all
- possible_keys 能用到的索引
- key 实际使用到的索引
下面对type各个类型做进一步说明:
1、system 系统表 表只有一行记录,基本不会出现的理想情况:
2、const 表示通过索引一次就找到了。 比如将主键置于where列表中,MySQL就能将该查询转换为一个常量。
3、eq_ref 唯一性索引。 对于每个索引 键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描
4、ref 非唯一性索引
5、range 只检索给定范围的行 一般来说就是 where中用 大于小于 in between等查找多条的条件
6、index 全表扫表 但是这个是从索引中读取
7、all 全表扫描 从硬盘中读取
一般来说至少要达到range级别!
1.3linux 下启动(重启、启动、停止)mysql服务
注意: 下述所列命令来源于网络。 其中 通过 service mysqld xxx的方式我试过了没有问题 其他两个方式有问题,时间原因未找到,有找到的愿意告诉我的欢迎评论
1.3.1 启动
- service mysqld start
- /etc/inint.d/mysqld start
- safe_mysqld&
1.3.2停止
- service mysqld stop
- /etc/inint.d/mysqld stop
- mysqladmin shutdown
1.3.2重启
- service mysqld restart
- /etc/inint.d/mysqld restart
1.4 常见错误
1.4.1 Packet for query is too large (5,060,223 > 4,194,304). You can change this value on the server by setting the ‘max_allowed_packet’ variable.
以上错误常见于 需要执行比较大的脚本的时候 其中 比较醒目的是 5,060,223 > 4,194,304 这一块 意思是 系统允许的大小是4194304(4096*1024) 而你要插入的大于这个数 说让你设置一下
我略作百度 查询出来需要执行如下代码
set global max_allowed_packet = 10*1024*1024;
结果我在本地用可视化工具执行词条指令时候又报错下一节的这个错误。
1.4.2 Access denied; you need (at least one of) the SUPER privilege(s) for this operation
这个错就很好解决了 ,我设置了用户的一些权限 在公司用 company账号 连接数据库时候 只允许访问部分表 那么只要 连上服务器 用root 账号执行相关命令就行了。