MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

时间:2022-09-03 17:18:22

mysql配置文件

二进制日志log-bin

主从复制及备份恢复(了解)

log-bin 中存放了所有的操作记录(写?),可以用于恢复。相当于 Redis 中的 AOF

my.cnf中的log-bin配置(默认关闭)

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

错误日志log-error

可自定义“慢”的概念:0-10秒之间的一个数。

慢查询日志会将超过这个查询事件的查询记录下来,方便找到需要优化的 sql 。

用于优化sql语句是使用。

默认是关闭的,记录严重的警告和错误信息,每次启动和关闭的详细信息等。

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

数据文件

两系统

windows: …\MySQLServer5.5\data目录下很多数据库文件

linux: 默认路径:/var/lib/mysql每个目录代表一个同名的库 (可在配置文件中更改 /usr/share/mysql/ 下的 my-huge.cnf

Myisam存放方式

frm文件(framework) :存放表结构

myd文件(data) :存放表数据

myi文件(index) :存放表索引

innodb存放方式

ibdata1:Innodb引擎将所有表的的数据都存在这里面 /usr/share/mysql/ibdata1 而frm文件存放在库同名的包下

frm文件:存放表结构

单独存放:如下MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

set innodb_file_per_table=on

create table mmm (id int(20) auto_increment ,name varchar(20),primary key(id));

设在为 on 后 单独以 table名.ibd 的文件名存储

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

如何配置



windows my.ini文件(配置文件)

Linux /etc/my.cnf文件(配置文件)

mysql的用户与权限管理

MySQL的用户管理

创建用户

create user zhang3 identified by '123123';
表示创建名称为zhang3的用户,密码设为123123;

了解user表

select host,user,password,select_priv,insert_priv,drop_priv from mysql.user;

select * from user\G;

将 user 中的数据以行的形式显示出来(针对列很长的表可以采用这个方法 )

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

host : 表示连接类型

% 表示所有远程通过 TCP方式的连接

IP 地址 如 (192.168.1.2,127.0.0.1) 通过制定ip地址进行的TCP方式的连接

机器名 通过制定i网络中的机器名进行的TCP方式的连接

::1 IPv6的本地ip地址 等同于IPv4的 127.0.0.1

localhost 本地方式通过命令行方式的连接 ,比如mysql -u xxx -p 123xxx 方式的连接。

User:表示用户名

同一用户通过不同方式链接的权限是不一样的。

password : 密码

所有密码串通过 password(明文字符串) 生成的密文字符串。加密算法为MYSQLSHA1 ,不可逆 。

mysql 5.7 的密码保存到 authentication_string 字段中不再使用password 字段。

select_priv , insert_priv等

为该用户所拥有的权限。

设置密码

修改当前用户的密码:

set password =password(‘123456’)

修改某个用户的密码:

update mysql.user set password=password(‘123456’) where user=‘li4’;

flush privileges; #所有通过user表的修改,必须用该命令才能生效。

修改用户

修改用户名:

update mysql.user set user=‘li4’ where user=‘wang5’;

flush privileges; #所有通过user表的修改,必须用该命令才能生效。

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

删除用户

drop user li4 ;

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

不要通过delete from user u where user=‘li4’ 进行删除,系统会有残留信息保留。

权限管理

授予权限

授权命令:

grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

该权限如果发现没有该用户,则会直接新建一个用户


比如

grant select,insert,delete, drop on atguigudb.* to li4@localhost ;

#给li4用户用本地命令行方式下,授予atguigudb这个库下的所有表的插删改查的权限。

grant all privileges on . to joe@’%’ identified by ‘123’;

#授予通过网络方式登录的的joe用户 ,对所有库所有表的全部权限,密码设为123.

就算 all privileges 了所有权限,grant_priv 权限也只有 root 才能拥有。

给 root 赋连接口令 grant all privileges on . to root@’%’ ;后新建的连接没有密码,需要设置密码才能远程连接。

update user set password=password(‘root’) where user=‘root’ and host=’%’;

收回权限

授权命令:

revoke 权限1,权限2,…权限n on 数据库名称.表名称 from 用户名@用户地址 ;

REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost;

#若赋的全库的表就 收回全库全表的所有权限

REVOKE select,insert,update, delete ON mysql.* FROM joe@localhost;

#收回mysql库下的所有表的插删改查权限

对比赋予权限的方法。

必须用户重新登录后才能生效

查看权限

查看当前用户权限

show grants;

查看某用户的全局权限

select * from user ;

查看某用户的某库的权限

select * from db;

查看某用户的某个表的权限

select * from tables_priv;

通过工具远程访问

1、先 ping 一下数据库服务器的ip 地址确认网络畅通。

2、关闭数据库服务的防火墙

service iptables stop

3、 确认Mysql中已经有可以通过远程登录的账户

select * from mysql.user where user=‘li4’ and host=’%’;

如果没有用户,先执行如下命令:

grant all privileges on . to li4@’%’ identified by ‘123123’;

4、测试连接:



MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

mysql的一些杂项配置

大小写问题

SHOW VARIABLES LIKE ‘%lower_case_table_names%’

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

windows系统默认大小写不敏感,但是linux系统是大小写敏感的

• 默认为0,大小写敏感。

• 设置1,大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于sql语句都是转换为小写对表和DB进行查找。

• 设置2,创建的表和DB依据语句上格式存放,凡是查找都是转换为小写进行。

设置变量常采用 set lower_case_table_names = 1; 的方式,但此变量是只读权限,所以需要在配置文件中改。

当想设置为大小写不敏感时,要在my.cnf这个配置文件 [mysqld] 中加入 lower_case_table_names = 1 ,然后重启服务器。

但是要在重启数据库实例之前就需要将原来的数据库和表转换为小写,否则更改后将找不到数据库名。

在进行数据库参数设置之前,需要掌握这个参数带来的影响,切不可盲目设置。

(生产环境)sql_mode

MySQL的sql_mode合理设置

sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题。

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

使用 set sql_mode=ONLY_FULL_GROUP_BY; 的方式设置会将之前的设置覆盖掉

同时设置多个限制:set sql_mode=‘ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO’;

sql_mode常用值如下:

ONLY_FULL_GROUP_BY:

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

NO_AUTO_VALUE_ON_ZERO:

该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

STRICT_TRANS_TABLES:

在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

NO_ZERO_IN_DATE:

在严格模式下,不允许日期和月份为零

NO_ZERO_DATE:

设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

ERROR_FOR_DIVISION_BY_ZERO:

在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL

NO_AUTO_CREATE_USER:

禁止GRANT创建密码为空的用户

NO_ENGINE_SUBSTITUTION:

如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

PIPES_AS_CONCAT:

将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES:

启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

ORACLE:

设置等同:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.

MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置的更多相关文章

  1. Linux学习笔记之五————Linux常用命令之用户、权限管理

    一.引言 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理. 在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资 ...

  2. 尚硅谷MySQL高级学习笔记

    目录 数据库MySQL学习笔记高级篇 写在前面 1. mysql的架构介绍 mysql简介 mysqlLinux版的安装 mysql配置文件 mysql逻辑架构介绍 mysql存储引擎 2. 索引优化 ...

  3. MySQL高级学习笔记(五):查询截取分析

    文章目录 慢查询日志 是什么 怎么玩 说明 查看是否开启及如何开启 默认 开启 那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢? Case 配置版 日志分析工具mysqldumpsl ...

  4. MySQL高级学习笔记(四):索引优化分析

    文章目录 性能下降 SQL慢 执行时间长 等待时间长 查询语句写的烂 查询数据过多 关联了太多的表,太多join 没有利用到索引 单值 复合 服务器调优及各个参数设置(缓冲.线程数等)(不重要DBA的 ...

  5. MySQL高级学习笔记(一):mysql简介、mysq linux版的安装(mysql 5.5)

    文章目录 MySQL简介 概述 mysql高手是怎样炼成的 mysq linux版的安装(mysql 5.5) 下载地址 拷贝&解压缩 检查工作 检查当前系统是否安装过mysql 检查/tmp ...

  6. MySQL高级学习笔记

    1. 变量相关 临时变量 -- 定义在函数体或存储过程中的变量 -- 用法在讲函数时会提到 用户变量,也称会话变量 -- 用户变量只对当前连接用户有效,其他连接用户无法访问 -- 使用 @ 标识符声明 ...

  7. MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎

    文章目录 Mysql逻辑架构介绍 总体概览 总体概览 mysql存储引擎 查看命令 看你的 mysql 现在已提供什么存储引擎 : 看你的 mysql 当前默认的存储引擎 : 各个引擎简介 MyISA ...

  8. Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理

    一.基础介绍 1.简介 一个基于GIT的源码托管解决方案 基于rubyonrails开发 集成了nginx postgreSQL redis sidekiq等组件 2.安装要求 2g内存以上,有点占内 ...

  9. MYSQL初级学习笔记二:数据表相关操作及MySQL存储引擎!(视频序号:初级_5,7-22|6)

    知识点三:数据表相关操作(5,7-22) --------------------------------整型--------------------------------- --测试整型 CREA ...

随机推荐

  1. C++混合编程之idlcpp教程Python篇(5)

    上一篇在这  C++混合编程之idlcpp教程Python篇(4) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程PythonTutorial3中,同样加入了三个文件:Py ...

  2. colpick-jQuery颜色选择器使用说明

      一.demo及下载网址:http://www.htmleaf.com/jQuery/Color-Picker/20141108417.html   二.使用效果   三.使用方法 1.引入js和c ...

  3. Web前端开发笔试&面试_05

    >>CW 1.JavaScript的2种变量范围有什么不同? 2.JavaScript 的对象有哪些? 3.

  4. MySQL 多实例删库脚本

    DB版本:5.5.14 OS:CentOS 6.3 在测试环境中,在一台服务器上创建多个实例,在每个实例中一个一个删库比较麻烦,因此用下面脚本,可以直接删除所有库,除了系统库以外: #!/bin/ba ...

  5. QT QXmlStreamWriter用法小结

    一 API介绍 writeStartDocument():写文档头,作用类似于创建一个xml文档,并在文档开头部分写入版本信息和编码信息,一般为: <?xml version="1.0 ...

  6. poj 1276 Cash Machine&lowbar;多重背包

    题意:略 多重背包 #include <iostream> #include<cstring> #include<cstdio> using namespace s ...

  7. java第一阶段测试

    一.选择题(35题 * 2分)1. 下列代码编译和运行的结果是:C public static void main(String[] args) {   String[] elements = { & ...

  8. FinalShell安装

    Mac版安装路径/Applications/finalshelldata Linux版安装路径/usr/lib/finalshelldata 注意:1.FinalShell运行需要java或者jdk支 ...

  9. SpringBoot添加CORS跨域

    配置CORSConfiguration 添加CORS的配置信息,我们创建一个CORSConfiguration配置类重写如下方法,如图所示: @Override public void addCors ...

  10. select下拉列表

    1.写 <!DOCTYPE html> <html> <head> <title></title> <script language= ...