MySql5.7基础配置
MySql5.7基础配置
[client]
#设置mysql客户端的字符集
default-character-set=utf8
[mysqld]
#设置mysql端口为3306
port = 3306
#设置mysql服务器的字符集
character-set-server=utf8
#设置存储引擎
default-storage-engine=INNODB
#开启MySQL log-bin日志
log-bin=mysql-bin
#binlog日志的格式,分别有STATEMENT、ROW、MIXED三种,影响主从复制
binlog-format=Row
#开启binlog的数据库
binlog-do-db=auth
#开启多个数据库的时候写多个
binlog-do-db=districter
#不开启binlog的数据库
binlog-ignore-db=mysql
#表名是否区别大小写
#0磁盘和查询全部区分
#1磁盘是小写,查询不区分大小写
#2磁盘区分大小写,查询是小写
lower_case_table_names=1
#开启慢sql日
slow_query_log=TRUE
#设置最大连接数
max_connections=500
#NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
#STRICT_TRANS_TABLES:严格模式,出错时放弃语句放弃事务
#TRADITIONAL模式:严格模式,出错时执行语句放弃事务
#ANSI模式:宽松模式,更改数据执行语句,使其能尽量保存成功,会自动变更数据模式,报错不会回滚
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#跳过表授权,可以无密码进入MySQL修改root用户密码,但是不能进行授权操作
#skip-grant-table
[mysqld_safe]
#日志路径
log-error=/var/log/mysql/mysqld.log
[mysql]
#设置字符集
default-character-set=utf8
配置路径和常用文件保存位置
默认配置文件路径: 配置文件:/etc/my.cnf 日志文件:/var/log//var/log/mysqld.log 服务启动脚本:/usr/lib/systemd/system/mysqld.service socket文件:/var/run/mysqld/mysqld.pid
常见问题
-
启动出现MySQL-bin.xxx等文字字样的报错
如果你不小心删除了mysql-bin.0000等文件。 mysql 可能会启动不起来。因为,mysql会根据index文件去找最新的日至。
这时候会报错误如 某个mysql-bin.0000 文件找不到。 你需要清空 mysql-bin.index这个文件。然后再启动。
-
安装完无法登陆,报密码错误
在安装MySQL5.7的时候,会初始化随即密码,如果不手动选择生成模式,会在安装过程中,把密码输出到控制台显示,非常复杂的一个字符串,需要仔细找.如果在初始化的时候使用参数配置可以设置空密码,登录之后可以自行修改.
mysqld --initialize-insecure --user=mysql ##生成空密码的初始化命令
-
timestamp类型的列,自动更新了
explicit_defaults_for_timestamp会控制timestamp类型自己更新,需要在创建表的时候,把timestamp类型默认值设置为null
如果已经创建完成,需要修改表结构,设置列的默认值为null
alter table tablename modify column col_timestamp timestamp null default null;
-
忘记root密码
在my.cnf文件中的[mysqld]下添加一句绕过授权的配置,可以无密码登录,修改完root用户密码之后再把配置去掉,使用root登录之后就可以正常操作系统了.
-
远程不能连接MySQL
1.开启远程访问的权限
grant all privileges on *.* to 'username'@'%' identified by 'password' with grant option;
第一个 *.*表示所有的权限都可以远程使用 , %表示连接的IP地址 .
2.服务器防火墙端口开启,默认是3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3306/udp --permanent
MySQL 优化记录:
- where条件可以加索引的必须加上索引
- 使用desc来查看有哪些联查没有使用到索引
- 索引字段的类型和长度在 联查的表中必须一致(大坑,很多时候注意不到)
- 可以把比较固定的联查表 , 单独拿出来查询完之后再进行其他表的联查
- 把字段长度尽可能的缩短 , 避免不必要的空间浪费
- 尽量使用定长字段
- 索引的先后顺序 , 尽可能的调整到都可以使用上的状态(where 和 联查 的字段 都按索引的顺序书写)