拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. Oracle基础知识
  3. 图灵小队
  4. 正文

图灵小队—MYSQL常见问题总结

2026年2月3日 56点热度 0人点赞 0条评论

目录

  • 0、mysql查看binlog
  • 一般情况,大多数人都搞不清楚这些内容的区别。
  • 1、my.cnf中的mysql,mysqld,client代表什么
    • (1)[client]—客户端工具默认设置内容;
    • (2)[mysql] —使用mysql命令登录数据库时的默认的设置;
    • (3)[mysqld]— 数据库服务端的默认设置;
  • 2、本机登录mysql,不识别中文是什么情况。
  • 系统本身查看是否支持中文。
  • 3、外键创建报错:1215——mysql的error1215原因_MySQL数据报1215错误如何解诀?
    • (1)两个字段的类型或者大小不严格匹配。
    • (2) 设置外键的字段没有建立起索引,或者不是一个primary key(主键)。
    • (3)其中一个或者两个表是MyISAM引擎的表。
    • (4)外键的名字不能重复。
    • (5)设置了ON DELETE SET NULL,但是相关的键的字段设置成了NOT NULL值。
    • (6)确保你的Charset和Collate选项在表级和字段级上的一致。
    • (7)两字段设置的默认值不一致。一个字段设置default为0,一个设置default为null,也是不可行的。
    • (8)ALTER声明中有语法错误。
  • 4、mysql中的角色是如何赋予的
  • 5、binlog日志突然增大的解决方法
  • 6、为什么MySQL的事务隔离级别是RR(Read-Repeatable-重复读),而不是RC(Read-Comitted都提交)?
    • (1)历史原因
  • 7、清理之前的日志
  • 8、初始化数据库
  • 9、初始密码修改--修改 root密码(3种)
    • (1)方法1:mysqladmin处理
    • (2)方法2:修改mysql.user表
    • (3)方法3:set语句
    • (4)方法4:使用alter user
  • 10、修改普通用户的密码
    • (1)方法1:修改mysql.user表
    • (2)方法2:grant方式修改
    • (3)方法3:set语句
    • (4)使用alter user(推荐)

0、mysql查看binlog

mysql> show binlog events;   #只查看第一个binlog文件的内容

mysql> show binlog events in 'mysql-bin.000002';#查看指定binlog文件的内容

mysql> show binary logs;  #获取binlog文件列表

mysql> show master status; #查看当前正在写入的binlog文件

一般情况,大多数人都搞不清楚这些内容的区别。

1、my.cnf中的mysql,mysqld,client代表什么

(1)[client]—客户端工具默认设置内容;

比如mysqldump,mysqlpump在运行时,就会读取[client]的参数,或[mysqldump]/[mysqlpump]等。

(2)[mysql] —使用mysql命令登录数据库时的默认的设置;

--案例:my.cnf位置在/mysql/data/3306/my.cnf,且[mysql]设置为:

[mysql]
no-beep
prompt="\u@mysql51 \R:\m:\s [\d]> "
#no-auto-rehash
auto-rehash
default-character-set=utf8
socket = /mysql/data/3306/mysql.sock

--如下登录使用的就是这个my.cnf下的内容,因为登录后,显示的prompt为:

[root@mysql51 3306]# mysql --defaults-file=/mysql/data/3306/my.cnf -uroot -p

因为my.cnf中指定了socket的位置,所以使用不会报错/tmp/mysql.sock。

--如果不指定my.cnf的位置,则使用默认的[mysql]的值,则会报错,/tmp/mysql.sock,软连接即可

(3)[mysqld]— 数据库服务端的默认设置;

2、本机登录mysql,不识别中文是什么情况。

系统本身查看是否支持中文。

3、外键创建报错:1215——mysql的error1215原因_MySQL数据报1215错误如何解诀?

估计使用外键出错了,检查一下外键表和这个表

(1)两个字段的类型或者大小不严格匹配。

例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。另外,你还必须确定两个字段是否都为signed或者unsigned,这两字段必须严格地一致匹配。

(2) 设置外键的字段没有建立起索引,或者不是一个primary key(主键)。

一般,需要建立外键的数据表称为子表,而相关联的数据表称为父表。建立外键时所对应的父表的字段必须要创建索引primary key。

(3)其中一个或者两个表是MyISAM引擎的表。

若想要使用外键约束,表必须是InnoDB引擎(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键,只会建立索引)你需要检查表的引擎类型。

(4)外键的名字不能重复。

检查该数据库确保外健名字是唯一的,或者你可以在键名后面加上几个随机的字符以测试是否为此原因。

(5)设置了ON DELETE SET NULL,但是相关的键的字段设置成了NOT NULL值。

通过修改外键的属性值或者把字段属性设置成allow null来解决。

(6)确保你的Charset和Collate选项在表级和字段级上的一致。

(7)两字段设置的默认值不一致。一个字段设置default为0,一个设置default为null,也是不可行的。

(8)ALTER声明中有语法错误。

4、mysql中的角色是如何赋予的

mysql 5.7和mysql 8.0的区别

5.7是模拟角色,将用户A的权限授予给用户B,C,D,用户A充当角色的意思;后期只对用户A进行权限更改即可。

8.0是和oracle一样的真正role.

5、binlog日志突然增大的解决方法

6、为什么MySQL的事务隔离级别是RR(Read-Repeatable-重复读),而不是RC(Read-Comitted都提交)?

详细分析见:

https://blog.csdn.net/srs1995/article/details/117821805

历史原因和bug

(1)历史原因

早阶段Mysql(5.1版本之前)的Binlog类型Statement是默认格式,即依次记录系统接受的SQL请求;

5.1及以后,MySQL提供了Row,Mixed,statement 3种Binlog格式, 当binlog为statement格式,使用RC隔离级别时,会出现BUG;因此Mysql将可重复读(Repeatable Read)作为默认的隔离级别!

(2)bug是什么

binlog为STATEMENT格式,且隔离级别为读已提交(Read Commited)时,有什么bug呢? 测试结果:

在master上执行的顺序为先删后插!而此时binlog为STATEMENT格式,是基于事务记录,在事务未提交前,二进制日志先缓存,提交后再写入记录的,因此顺序为先插后删!slave同步的是binglog,因此从机执行的顺序和主机不一致!slave在插入后删除了所有数据.

解决方案有两种!

(1)隔离级别设为可重复读(Repeatable Read),在该隔离级别下引入间隙锁。当Session 1执行delete语句时,会锁住间隙。那么,Ssession 2执行插入语句就会阻塞住!

(2)将binglog的格式修改为row格式,此时是基于行的复制,自然就不会出现sql执行顺序不一样的问题!奈何这个格式在mysql5.1版本开始才引入。

因此由于历史原因,mysql将默认的隔离级别设为可重复读(Repeatable Read),保证主从复制不出问题!

7、清理之前的日志

purge binary logs to 'llldb-binlog.000004';

8、初始化数据库

 mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data

9、初始密码修改--修改 root密码(3种)

(1)方法1:mysqladmin处理

mysqladmin -u root -h localhost -p password 'rootroot';

(2)方法2:修改mysql.user表

use mysql;
update mysql.user set authentication_string=PASSWORD('root') where user='root';
flush privileges;

(3)方法3:set语句

set password=PASSWORD('rootroot');
flush privileges;

(4)方法4:使用alter user

alter user 'root'@'localhost' identified by 'rootroot';
alter user 'root'@'%' identified by 'rootroot';

10、修改普通用户的密码

(1)方法1:修改mysql.user表

use mysql;
update mysql.user set authentication_string=PASSWORD('123') where user='test' and host='localhost';
flush privileges;

(2)方法2:grant方式修改

grant usage on *.* to 'test'@'%' identified by '123';
grant usage on *.* to 'test'@'localhost' identified by '123';
flush privileges;

(3)方法3:set语句

set password=PASSWORD('123');

(4)使用alter user(推荐)

alter user "test'@'localhost" identified by '123';
alter user 'test'@'%' identified by '123';

 


                        
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2023年11月9日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号