MySQL 基础

MySQL 基础

MySQL Install on MacOS

使用可解压的二进制安装包,安装 MySQL (Installing MySQL),第一次启动需要初始化数据目录,参考这里:Init the data directory on MySQL Document

$ cd mysql-master

# Init the data dir first
# bin/mysqld --defaults-file=./my.cnf --initialize --user=mysql
$ bin/mysqld --initialize --user=mysql
A temporary password is generated for root@localhost: r_/(wD0p3;Im

# bin/mysqld --defaults-file=/etc/my.cnf &
$ bin/mysqld --defaults-file=/etc/my.cnf

# test Server
$ bin/mysqladmin -S /var/run/mysqld/mysqld.sock -u root -p version

$ bin/mysqladmin -S /var/run/mysqld/mysqld.sock -u root -p shutdown

$ bin/mysqlshow -S /var/run/mysqld/mysqld.sock -u root -p

$ bin/mysqlshow -S /var/run/mysqld/mysqld.sock -u root -p mysql

$ bin/mysql --defaults-file=/etc/my.cnf -u root -p -e "select host, user from user" mysql


# Another terminal
$ bin/mysql -S /var/run/mysqld/mysqld.sock -P 3308 -u root -p

# alter user root@'127.0.0.1' IDENTIFIED WITH caching_sha2_password BY '123456';
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
mysql> CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';

主从同步配置

Note: MySQL 8.0 配置主从同步和之前的版本有些区别,需要特别注意。

MySQL 特性

字符集与比较规则

字符集:ASCII / ISO 8859-1(latin1) / GB2312 / GBK / utf8

使用的这个MySQL版本一共支持41种字符集,其中的Default collation列表示这种字符集中一种默认的比较规则

  • 比较规则名称以与其关联的字符集的名称开头。如上图的查询结果的比较规则名称都是以utf8开头的。

  • 后边紧跟着该比较规则主要作用于哪种语言,比如utf8_polish_ci表示以波兰语的规则比较,utf8_spanish_ci是以西班牙语的规则比较,utf8_general_ci是一种通用的比较规则。

  • 名称后缀意味着该比较规则是否区分语言中的重音、大小写;

后缀

英文释义

描述

_ai

accent insensitive

不区分重音

_as

accent sensitive

区分重音

_ci

case insensitive

不区分大小写

_cs

case sensitive

区分大小写

_bin

binary

以二进制方式比较

每种字符集对应若干种比较规则,每种字符集都有一种默认的比较规则,SHOW COLLATION的返回结果中的Default列的值为YES的就是该字符集的默认比较规则,比方说utf8字符集默认的比较规则就是utf8_general_ci

字符集支持各种级别的配置:服务器级别 -> 数据库级别 -> 表级别 -> 列级别

MySQL 物理表

在 InnoDB 存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表为索引组织表。每张表都有个主键,如果没有定义主键,按照如下的方式来选择主键:

  • 找到第一个定义的非空唯一索引,作为主键

  • 如果不存在唯一索引,InnoDB 就自动创建一个 6 Bytes 大小的指针

最后更新于

这有帮助吗?