MySQL版本升級,SQL基礎(chǔ)應(yīng)用及元數(shù)據(jù)獲取

一. 8.0.16二進(jìn)制安裝&& 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的數(shù)據(jù)
5. mysql_upgrade -uroot -p123 -S /tmp/mysql.sock

跨版本升級 :
1. 不要夸多個版本
2. 看好版本

二. MySQL的啟動關(guān)閉及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 手工啟動方式(維護(hù)性操作時)
/etc/init.d/mysqld -----> /usr/local/mysql/bin/mysqld_safe  ----> /usr/local/mysql/bin/mysqld

例子:  管理員用戶root@'localhost',密碼丟失 .

(1. 通過跳過授權(quán)表參數(shù)+跳TCP/IP的參數(shù),啟動數(shù)據(jù)庫 
--skip-grant-tables   : 跳過授權(quán)表,連接層關(guān)閉驗證模塊.
--skip-networking     : 關(guān)閉連接層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. 正常重啟數(shù)據(jù)庫 
[root@db01 ~]# service mysqld restart

2.5 mysql的其他關(guān)閉方式 
[root@db01 ~]# mysqladmin -uroot -p -S /tmp/mysql.sock shutdown

三. MySQL初始化配置

3.0 初始化配置方式
(1) 配置文件  *****
(2) 命令行    ***
(3) 編譯安裝  *
 
3.1 配置文件默認(rèn)讀取順序(/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

自己定義默認(rèn)位置:  mysqld或者mysqld_safe  加入 --defaults-file=/opt/oldguo.conf 

3.2 配置文件內(nèi)容 
3.2.1 影響范圍

      服務(wù)端啟動和工作
      本地客戶端連接(socket)

3.2.2 內(nèi)容結(jié)構(gòu) 
標(biāo)簽:  
服務(wù)端:  [mysqld]   [mysqld_safe]   [server]
客戶端:  [mysql]    [mysqldump]     [client]
參數(shù): 
參數(shù)名=值

例子:
[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 規(guī)劃 
(1) 端口 : 3307,3308,3309 
(2) 數(shù)據(jù) : /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) 創(chuàng)建關(guān)鍵目錄 
mkdir -p /data/330{7..9}/data 
chown -R mysql.mysql /data/*
(2) 初始化數(shù)據(jù)
[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) 準(zhǔn)備配置文件
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) 準(zhǔn)備啟動腳本
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基礎(chǔ)應(yīng)用&元數(shù)據(jù)獲取

1. SQL介紹  
結(jié)構(gòu)化的查詢語言.關(guān)系型數(shù)據(jù)庫中通用的一種命令.
使用SQL_MODE規(guī)范SQL語句的語法標(biāo)準(zhǔn).
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
確保數(shù)據(jù)有意義.
  • SQL常用分類
DDL : 數(shù)據(jù)定義語言
DCL : 數(shù)據(jù)控制語言
DML : 數(shù)據(jù)操作語言
DQL : 數(shù)據(jù)查詢語言
  • 字符集&校對規(guī)則介紹
字符集:  
utf8    :  最多允許字符長度為3個字節(jié)
utf8mb4 :  最多允許字符長度為4個字節(jié)
校對規(guī)則 : 排序規(guī)則
說明:
可以作用于庫級別和表級別.一般是在建庫建表時設(shè)定
  • 表的屬性和列的屬性
表定義屬性
存儲引擎  :  InnoDB 
字符集 & 校對規(guī)則 : utf8mb4 
注釋    
  • 列的屬性
數(shù)據(jù)類型 
保證數(shù)據(jù)有意義.
(1) 數(shù)值類型
tinyint : 1Bytes=8bit -128~127 , 0-255 .最多存儲1個字節(jié)長度數(shù)字 
int     : 4Bytes, 0-2^32,-2^31~2^31-1,10位數(shù)
bigint  : 8Bytes, 0-2^64,-2^63~2^63-1,20位數(shù)

(2) 字符串類型(萬能)                      
char(64)        :  括號中最大的字符長度        255字節(jié)
定長的字符串類型,一次性分配固定長度存儲空間,存不滿,用空字符串填充

varchar(64) :變長的字符類型, 按需分配存儲空間.
65535字節(jié),最多65533. 
1-255字符之間,單獨占用1字節(jié)存儲字符長度.
256-65535字符長度,單獨占用2字節(jié)存儲字符長度

(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會受到時區(qū)的影響

區(qū)別 :
char(64)  varchar(64)
1. 定長  和 變長 
2. 64代表了,最多可以存儲字符的個數(shù)
3. 字節(jié)限制 255 , 65535字節(jié)
5. varchar 需要花費額外的1-2字節(jié)存儲字符長度

如何選擇:

  1. 業(yè)務(wù)數(shù)據(jù)是定長還是變長
  2. 字符長度
    注意: 數(shù)字列不要使用,經(jīng)常變化的列不要使用

六.

1. 約束

not null   非空約束 
unique key 唯一約束
primary key 主鍵約束(非空且唯一),一張表只能有一個,一般是ID列
數(shù)據(jù)類型約束: unsigned  非負(fù)數(shù)

2.其他屬性

auto_increment  自增長
default         默認(rèn)值
comment         注釋
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨的應(yīng)用程序。每個數(shù)據(jù)庫具有一個或多個不同的API,用于創(chuàng)建,訪問,管理...
    chen_000閱讀 4,144評論 0 19
  • MySQL數(shù)據(jù)庫對象與應(yīng)用 2.1-MySQL數(shù)據(jù)類型 庫建立好之后基本不動,和我們接觸最頻繁的是表. 建表就是聲...
    極客圈閱讀 2,258評論 0 8
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,339評論 0 10
  • 手動不易,轉(zhuǎn)發(fā)請注明出處 --Trance 數(shù)據(jù)庫系統(tǒng)命令: (1).查看存儲過程狀態(tài):show pro...
    Trance_b54c閱讀 1,831評論 0 8
  • 因為昨天明確被告知暫時沒有任務(wù),所以就放心大膽摸魚了(ntm)本來還想主動撿一點活干,后來也懶得這么做了【。 下午...
    真晝之月閱讀 142評論 0 0

友情鏈接更多精彩內(nèi)容