1. mysql的版本升级5.6.44-5.7.26
mysql版本升级有就地升级和迁移升级,mysql跨版本升级最好只跨一个版本,版本升级包括软件升级和数据升级!
环境:虚拟机是mysql5.6.44版本已经安装完成可用使用 升级到5.7.26版本
软件升级
1. 官网下载新版本到指定目录/usr/local/ 并解压。
2.修改旧版本软连接指向,ln -snf 5.7.26 mysql 命令执行后如下图
关于ln 命令的扩展,想要删除一个软链接时,rm -rf mysql”/“ 不能加斜线,否则只是删除目录下的资源。删除软连接目录下资源,源连接目标下的数据也会被删除
数据升级
1.关闭旧版本mysql服务 mysqladmin -u root -p shutdown
2.使用现有数据目录启动新版本服务,此处因为做了软连接的更改,因此mysql的启动配置文件数据目录都无需改动。
/usr/local/mysql/support-files]#./mysql.server start
3.使用
mysql_upgrate 命令升级更新系统数据库
mysql_upgrade -uroot -p -S /tmp/mysql.sock
产看库可见升级成功。
参考 https://dev.mysql.com/doc/refman/5.7/en/upgrade-binary-package.html
2. mysql的连接管理
1.1 MySQL Linux 连接协议
Socket : 本地登录,提前创建好localhost相关用户
TCPIP : 远程登录,提前创建好 远程用户.
1.2 MySQL客户端
mysql :
[root@db01 ~]# mysql -uroot -p -S /tmp/mysql.sock
[root@db01 ~]# mysql -uoldguo -p -h10.0.0.51 -P3306
例子: 管理员用户root@'localhost',密码丢失 .
(1. 通过跳过授权表参数+跳TCP/IP的参数,启动数 据库
--skip-grant-tables : 跳过授权表,连接层关闭验 证模块.
--skip-networking : 关闭连接层TCP/IP,只留 socket文件连接
(2. 无密码登录到MySQL
mysql
(3. 修改密码
mysql> alter user root@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '123';
(5. 正常重启数据库
[root@db01 ~]# service mysqld restart
2.5 mysql的其他关闭方式
[root@db01 ~]# mysqladmin -uroot -p -S /tmp/mysql.sock shutdown
3. 多实例配置mysql
5.1 规划
(1) 端口 : 3307,3308,3309
(2) 数据 : /data/330{7..9}/data
(3) 配置文件: /data/330{7..9}/my.cnf
port=3307/3308/3309
server_id=7/8/9
datadir=/data/330{7..9}/data
socket=/tmp/mysql330{7..9}.sock
5.2 干活
(1) 创建关键目录
mkdir -p /data/330{7..9}/data
chown -R mysql.mysql /data/*
(2) 初始化数据
[root@db01 /data]# mv /etc/my.cnf /tmp
mysqld --initialize-insecure --user=mysql -- basedir=/usr/local/mysql --datadir=/data/3307/data
mysqld --initialize-insecure --user=mysql -- basedir=/usr/local/mysql --datadir=/data/3308/data
mysqld --initialize-insecure --user=mysql -- basedir=/usr/local/mysql --datadir=/data/3309/data
(3) 准备配置文件
cat > /data/3307/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3307/data
port=3307
server_id=7
socket=/tmp/mysql3307.sock
EOF
(5) 准备启动脚本
cat > /etc/systemd/system/mysqld3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en /using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld -- defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
(6) 启动多实例
[root@db01 ~]# systemctl start mysqld3307
[root@db01 ~]# systemctl start mysqld3308
[root@db01 ~]# systemctl start mysqld3309
4. SQL基础应用&元数据获取
SQL介绍
结构化的查询语言.关系型数据库中通用的一种命令.
使用SQL_MODE规范SQL语句的语法标准.SQL_MODE
mysql> select @@sql_mode;
ONLY_FULL_GROUP_BY,
STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,
NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION
确保数据有意义.SQL常用分类
DDL : 数据定义语言
DCL : 数据控制语言
DML : 数据操作语言
DQL : 数据查询语言-
字符集&校对规则介绍
字符集:
utf8 : 最多允许字符长度为3个字节
utf8mb4 : 最多允许字符长度为4个字节
gbk :
mysql> show charset;
校对规则 : 排序规则
AbCD
ABCD
mysql> show collation;
说明:
可以作用于库级别和表级别.一般是在建库建表时设定
5.2 列的属性
5.2.1 数据类型
保证数据有意义.
(1) 数值类型
tinyint : 1Bytes=8bit -128~127 , 0-255 .最多存储1个字节长度数字
int : 4Bytes, 0-232,-231~2^31-1,10位数
bigint : 8Bytes, 0-264,-263~2^63-1,20位数
说明:数值类型中一个字节等于8bit全1的情况最多是255
(2) 字符串类型(万能)
char(64) : 括号中最大的字符长度 255字节
定长的字符串类型,一次性分配固定长度存储空间,存不满,用空字符串填充varchar(64) :变长的字符类型, 按需分配存储空间.
65535字节,最多65533.
1-255字符之间,单独占用1字节存储字符长度.
256-65535字符长度,单独占用2字节存储字符长度
区别 :
char(64) varchar(64)- 定长 和 变长
- 64代表了,最多可以存储字符的个数
- 字节限制 255 , 65535字节
- varchar 需要花费额外的1-2字节存储字符长度
说明:字符串类型char()括号里的数字代表字节数
(3)enum('山东省','河北省','北京市','上海市'......) :
枚举类型
0 1 2 3
注意: 数字列不要使用,经常变化的列不要使用
(3) 时间类型
datetime
timestamp
DATETIME
范围为从 1000-01-01 00:00:00.000000 至 9999-12-31 23:59:59.999999。
TIMESTAMP
1970-01-01 00:00:00.000000 至 2038-01-19 03:14:07.999999。
timestamp会受到时区的影响
(5) 二进制类型 (略)
(6) Json类型(8.0以后支持的比较好)
6.3 约束
not null 非空约束
unique key 唯一约束
primary key 主键约束联合主键(非空且唯一),一张表只能有一个,一般是ID列,身份证列,学号列,带有字母+数字的。可用联合主键约束其唯一性正合适
数据类型约束: unsigned 非负数
6.5 其他属性
auto_increment 自增长
default 默认值
comment 注释