注:本文总结自掘金小册《MySQL 是怎样运行的:从根儿上理解 MySQL》

MySQL程序结构

MySQL是CS架构,客户端进程默认名称为mysql,服务端进程默认名称为mysqld。

Linux系统下,通常将MySQL安装在/usr/local/目录下,此时/usr/local/mysql/bin目录下可见各种客户端与服务器端程序,例如:mysql,mysql.server,mysqladmin,mysqld,mysqld_safe,mysqlbinlog,mysqlcheck等。

程序启停

Linux下如何启动MySQL服务器:

运行mysqld;

运行监控程序,用于在mysqld挂掉时重启;

重定向错误日志到日志文件。

运行mysqld程序,不常用;

运行mysqld_safe:mysqld_safe是一个启动脚本,该脚本会做几个事情:

运行mysql.server:mysql.server也是一个启动脚本,调用mysqld_safe,调用方法为mysql.server start和mysql.server stop;

Windows下如何启动MySQL服务器:

将mysqld注册为服务:举例:"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld" --install;

启动和停止:net start MySQL和net stop MySQL

启动客户端程序:mysql -h主机名 -u用户名 -p回车后输入密码;

MySQL处理客户端请求的过程:连接-缓存-解析-优化-引擎。完成优化后,会生成执行计划,按照执行计划调用引擎API获取数据;

innoDB的特点:支持事务(transactions)、分布式事务(XA)、行级锁(row-level locking)、外键(foreign keys)、部分事务回滚(SavePoints);

指定表的存储引擎:

创建表时指定:create table 表名(...)engine = 引擎名;

修改表的引擎:alter table 表名 engine = 引擎名;

设置系统变量

命令行

在通过命令行启动程序时,可以通过命令行参数方式指定配置参数,此种方式只对当次启动有效

例如:

mysql -u root # 短选项方式指定用户名

mysql --user=root # 长选项方式指定用户名(注意:长选项方式等号两边不能有空格)

mysqld --default-storage-engine=MyISAM #长选项方式指定默认存储引擎

配置文件

MySQL会按照顺序从如下目录读取配置文件,并以最后一个为准,配置文件名称通常为my.ini或my.cnf,功能完全一样。

windows

C:\windows\my.ini

C:\my.ini

mysql安装目录\my.ini

通过命令行参数--defaults-extra-file指定位置,例如:mysqld --defaults-extra-file=C:\Users\my_extra_file.ini

linux

/etc/my.cnf

/etc/mysql/my.cnf

编译安装目录/my.cnf ,在自己编译mysql安装时使用

$MYSQL_HOME$/my.cnf 环境变量路径下,只用于服务器端

defaults-extra-file 命令行指定配置文件路径

~/.my.cnf 用户目录下配置

说明:如果没有配置环境变量,mysqld_safe程序会自动将环境变量置为mysql安装目录,因此默认会使用mysql安装目录下的配置文件;使用mysql.server启动会自动调用mysqld_safe程序;

配置文件内容

mysql配置文件的内容分为很多个组,例如:server、mysqld、mysqld_safe、client、mysql、mysqladmin等;

配置项格式为:option = value,等号两边可以有空格;

server组配置项用于所有服务器端程序,如:server、mysqld、mysqld_safe;

client组配置项则用于客户端程序,如:mysql、mysqladmin、mysqldump;

在同一个配置文件中,配置按照从上到下的顺序配置,如果有相同功能的参数,以最后一个为准;

还可以通过defaults-file命令行参数指定配置路径,如果找不到会直接报错,而不会去扫描以上目录;

运行时修改变量

运行时可以通过客户端修改系统变量,此时系统变量分为GLOBAL和SESSION,即全局变量和会话变量;

例如:

# 设置全局变量,默认存储引擎为MyISAM,两种写法都可以

set global default_storage_engine = MyISAM;

set @@global.default_storage_engine = MyISAM;

# 设置会话变量,不标明global还是session则默认为session

set session default_storage_engine = MyISAM;

set @@session.default_storage_engine = MyISAM;

set default_storage_engine = MyISAM;

需要注意,如果修改了global的系统变量,当前session变量不会跟着变,后续的session才会跟global一致;

状态变量

状态变量用于显示服务器当前状态,例如:

show status like 'thread%';

MySQL中字符集

通常意义上的UTF-8字符集表示1个字符需要1~4个字节,常用字符通常需要1~3个字节,一些特殊字符例如emoji则需要4个字节来存储;

mysql中的utf8字符集又叫utf8mb3,是阉割版的utf8字符集,用1~3个字节表示一个字符,用于常用字符;如果需要存储emoji表情之类的特殊字符,则需要使用utf8mb4字符集,这是完整的utf8字符集;

通常使用utf8字符集,即utf8mb3字符集,搭配utf8_general_ci比较规则,这个比较规则忽略大小写;

比较规则对照表:

后缀

英文释义

描述

_ai

accent insensitive

不区分重音

_as

accent sensitive

区分重音

_ci

case insensitive

不区分大小写

_cs

case sensitive

区分大小写

_bin

binary

以二进制方式比较

mysql中字符集和比较规则分为4个级别:服务器级别、数据库级别、表级别、列级别。

服务器级别:通过系统变量指定字符集和比较规则:character_set_server和collation_server

数据库级别:在创建数据库时指定,语法为:create database 数据库名 character set 字符集名 collate 比较规则名;

表级别:在建表时指定,语法为:create table 表名 (...) character set 字符集名 collate 比较规则名;

列级别:在建表时指定每个字段的字符集和比较规则,语法为:create table 表名 (

列名1 类型 character set 字符集名 collate 比较规则名,

列名2 ...

);

如果没有指定,则会默认继承上一级的字符集和比较规则;

mysql在线基本_MySQL基本配置相关推荐

  1. mysql在线复制_mysql的两种复制模式

    mysql的复制术语 扩展的方式: Scale up Scale Out 复制: 向外扩展 二进制日志 单向 复制功用: 数据分布 负载均衡:读操作,适用于读密集型的应用 备份 高可用和故障切换 My ...

  2. 配置mysql读写主从_Mysql主从配置,实现读写分离

    MySQL数据库监控功能作为SUM服务器监控软件的一项基本功能,从SUM服务器监控软件发布开始就一直作为其核心功能之一,大量用户环境中正式使用,具有稳定.易用.指标齐全等特点. 通过SUM可以快速监控 ...

  3. window mysql安全设置_mysql安全配置方案

    1 限制访问mysql端口的ip windows可以通过windows防火墙或者ipsec来限制,linux下可以通过iptables来限制. 2 修改mysql的端口 windows下可以修改配置文 ...

  4. MySQL主从压_mysql主从配置

    在同一台服务器中建立mysql主从 mysql-5.1.72-linux-i686-glibc23.tar.gz 二:搭建步骤 1.下载:cd /usr/local/src ;wget http:// ...

  5. mysql router测试_MySQL 主从复制配置 + MySQL Router 部署使用测试

    三.验证测试 1.读写分离测试 读写分离是通过在配置文件中配置的不同端口实现 由于MySQLrouter节点未安装mysql客户端程序,所以在mysqldb1节点测试 登录写节点:端口7001 mys ...

  6. mysql数据库安全配置文件_MySQL数据库安全配置

    MySQL数据库安全配置 1.前言 MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统.它具有功能强.使用简便.管理方便.运行速度快.安全可靠性强 ...

  7. mysql在线复制_mysql如何在线修改主从复制选项

    前言: MySQL最常用的架构就是主从复制了,其实主从复制有很多选项,特别是在从库端,我们可以设置复制过滤,比如说忽略某张表或某个库.这些过滤选项都是可以在线修改而不用重启的.原来对这块了解不多,最近 ...

  8. iis mysql版本切换_MySQL+PHP配置 Windows系统IIS版(转)

    1.下载 MySQL下载地址:http://dev.mysql.com/downloads/mysql/5.1.html->Windows (x86, 32-bit), MSI Installe ...

  9. mysql 主从优点_MySql主从配置实践及其优势浅谈

    1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my.cnf): [client] po ...

最新文章

  1. Java 参数后面跟三个... 的作用
  2. javaScript中的事件对象event是怎样
  3. hexo + github 搭建个人博客
  4. 亮剑吧,掏出你吃灰的单片机板子。
  5. Android 核心分析之十二Android GEWS窗口管理之基本架构原理
  6. C# - Span 全面介绍:探索 .NET 新增的重要组成部分
  7. java 方法委托托管_Java Web托管选项流程图
  8. 目录指南中的Python列表文件-listdir VS system(“ ls”)通过示例进行解释
  9. 分析了 9 万条程序员招聘数据,Python 薪资竟反超 Java?
  10. sysdate取年取月取日
  11. IIS与ASP.NET Http Runtime Pipeline
  12. WampServer中MySQL中文乱码解决
  13. Unity 安装个人免费版步骤详解
  14. 异常处理 | manual close is not allowed over a Spring managed SqlSession
  15. Kettle8.2查询组件之数据库查询
  16. 超级计算机 人脑,迄今为止没有一部超级计算机的综合能力超过人脑
  17. 阿里云短信服务-个人账户测试短信服务
  18. 一文读懂 | 数据中台如何为企业赋能?
  19. uiautomator2+ tesseract 智能识别文字实现手游辅助外挂,打怪刷装备快人一步
  20. 验证“哥德巴赫猜想”思路分析

热门文章

  1. Mastercam 2017 图形阵列(矩形阵列与环形阵列)
  2. 浅谈IT行业加班有没有价值
  3. 来免费领养blog绿豆蛙宠物吧,和QQ宠物差不多
  4. 无法安装office此计算机安装了32位,在电脑上安装64位Office2013出错提示找到了32位程序如何解决...
  5. 上市P2P转型电商:和信贷推会员制购物平台,前车之鉴今犹在
  6. 【2021-12-11】在 Windows 系统下,迁移 Android Studio 的 Android 虚拟设备(AVD)到非系统分区,释放系统盘空间
  7. echarts 中国地图飞机实现demo 中国地图路线飞行 echarts飞行
  8. 利用PhoneGap技术将“捕鱼达人”网页游戏移植到Android手机
  9. python queue 查询是否在队列中_Python queue队列
  10. 经济数据预测 | Python实现CNN-LSTM股票价格预测时间序列预测