MySQL版本升级,SQL基础应用及元数据获取

一. 8.0.16二进制安装&& 5.7.26升级到8.0

[root@db01 /usr/local]# mv mysql-8.0.16-linux-glibc2.12-x86_64 mysql80
[root@db01 /usr/local]# chown -R mysql.mysql mysql80
[root@db01 /usr/local]# mkdir -p /data/mysql/data80
[root@db01 /usr/local]# chown -R mysql.mysql /data/
[root@db01 /usr/local]# mv  /etc/my.cnf  /etc/my.cnf.bak


[root@db01 ~]# cat /etc/my80.cnf 
[mysqld]
user=mysql
basedir=/usr/local/mysql80
datadir=/data/mysql/data80
socket=/tmp/mysql80.sock
port=3380

[root@db01 ~]# /usr/local/mysql80/bin/mysqld_safe --defaults-file=/etc/my80.cnf &

5.6 升级 到 5.7 思路

1. 安装新版本软件
2. 改软连接或配置文件basedir
3. 用5.7的软件启动5.6的数据
5. mysql_upgrade -uroot -p123 -S /tmp/mysql.sock

跨版本升级 :
1. 不要夸多个版本
2. 看好版本

二. MySQL的启动关闭及root用户密码忘记解决办法

2.1 SysV 
service mysqld start/stop/restart/status
2.2 systemd 
[root@db01 ~]# systemctl start/stop/restart/status  mysqld   --socket=/tmp/aa.sock 

2.3 手工启动方式(维护性操作时)
/etc/init.d/mysqld -----> /usr/local/mysql/bin/mysqld_safe  ----> /usr/local/mysql/bin/mysqld

例子:  管理员用户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

三. MySQL初始化配置

3.0 初始化配置方式
(1) 配置文件  *****
(2) 命令行    ***
(3) 编译安装  *
 
3.1 配置文件默认读取顺序(/etc/my.cnf)
[root@db01 ~]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf ---> /etc/mysql/my.cnf ----> /usr/local/mysql/etc/my.cnf   ---> ~/.my.cnf 
scoket=A              B                           C                               D

自己定义默认位置:  mysqld或者mysqld_safe  加入 --defaults-file=/opt/oldguo.conf 

3.2 配置文件内容 
3.2.1 影响范围

      服务端启动和工作
      本地客户端连接(socket)

3.2.2 内容结构 
标签:  
服务端:  [mysqld]   [mysqld_safe]   [server]
客户端:  [mysql]    [mysqldump]     [client]
参数: 
参数名=值

例子:
[root@db01 ~]# cat /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

四. 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

cat > /data/3308/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3308/data
port=3308
server_id=8
socket=/tmp/mysql3308.sock
EOF

cat > /data/3309/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3309/data
port=3309
server_id=9
socket=/tmp/mysql3309.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

cat > /etc/systemd/system/mysqld3308.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/3308/my.cnf
LimitNOFILE = 5000
EOF

cat > /etc/systemd/system/mysqld3309.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/3309/my.cnf
LimitNOFILE = 5000
EOF

(6) 启动多实例 
[root@db01 ~]# systemctl start mysqld3307
[root@db01 ~]# systemctl start mysqld3308
[root@db01 ~]# systemctl start mysqld3309

[root@db01 ~]# netstat -tulnp|grep mysqld
tcp6       0      0 :::3307                 :::*                    LISTEN      10327/mysqld        
tcp6       0      0 :::3308                 :::*                    LISTEN      10361/mysqld        
tcp6       0      0 :::3309                 :::*                    LISTEN      10395/mysqld

五. SQL基础应用&元数据获取

1. SQL介绍  
结构化的查询语言.关系型数据库中通用的一种命令.
使用SQL_MODE规范SQL语句的语法标准.
2. 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个字节
校对规则 : 排序规则
说明:
可以作用于库级别和表级别.一般是在建库建表时设定
  • 表的属性和列的属性
表定义属性
存储引擎  :  InnoDB 
字符集 & 校对规则 : utf8mb4 
注释    
  • 列的属性
数据类型 
保证数据有意义.
(1) 数值类型
tinyint : 1Bytes=8bit -128~127 , 0-255 .最多存储1个字节长度数字 
int     : 4Bytes, 0-2^32,-2^31~2^31-1,10位数
bigint  : 8Bytes, 0-2^64,-2^63~2^63-1,20位数

(2) 字符串类型(万能)                      
char(64)        :  括号中最大的字符长度        255字节
定长的字符串类型,一次性分配固定长度存储空间,存不满,用空字符串填充

varchar(64) :变长的字符类型, 按需分配存储空间.
65535字节,最多65533. 
1-255字符之间,单独占用1字节存储字符长度.
256-65535字符长度,单独占用2字节存储字符长度

(3) enum('山东省','河北省','北京市','上海市'......) :  枚举类型
        0     1         2        3 

(4)  时间类型 
     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会受到时区的影响

区别 :
char(64)  varchar(64)
1. 定长  和 变长 
2. 64代表了,最多可以存储字符的个数
3. 字节限制 255 , 65535字节
5. varchar 需要花费额外的1-2字节存储字符长度

如何选择:

  1. 业务数据是定长还是变长
  2. 字符长度
    注意: 数字列不要使用,经常变化的列不要使用

六.

1. 约束

not null   非空约束 
unique key 唯一约束
primary key 主键约束(非空且唯一),一张表只能有一个,一般是ID列
数据类型约束: unsigned  非负数

2.其他属性

auto_increment  自增长
default         默认值
comment         注释
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容

  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,035评论 0 19
  • MySQL数据库对象与应用 2.1-MySQL数据类型 库建立好之后基本不动,和我们接触最频繁的是表. 建表就是声...
    极客圈阅读 2,144评论 0 8
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,744评论 0 10
  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 1,661评论 0 8
  • 因为昨天明确被告知暂时没有任务,所以就放心大胆摸鱼了(ntm)本来还想主动捡一点活干,后来也懒得这么做了【。 下午...
    真昼之月阅读 119评论 0 0