mysql在线基本_MySQL基本配置

注:本文总结自掘金小册《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 ...

);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值