數(shù)據(jù)庫 day 02 mysql 基礎(chǔ)管理

補(bǔ):

數(shù)據(jù)初始化 (建系統(tǒng)庫) ---(不安全的初始化方式迁客,會生成一個隨機(jī)登錄數(shù)據(jù)庫密碼檀何。登錄時必須修改密碼才能登錄)
[root@db01 data_3306]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3306

5.7 以前版本初始化方式:
/usr/local/mysql56/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql56 --datadir=/data/mysql/data_3306

show processlist; #查看當(dāng)前線程用戶登錄數(shù)量

SQL層

1. 語法 
2. 語義
3. 權(quán)限
4. 解析   ---> 執(zhí)行計劃
5. 預(yù)處理 ---> 代價計算(cost)
6. 優(yōu)化器 ---> 選擇代價低的
7. 執(zhí)行器 ---> 結(jié)果----> 段--->區(qū)---->頁

查詢QC(query_cache)  #將解析、預(yù)處理践付、優(yōu)化器等重復(fù)操作保存在緩存中秦士,提高效率。

day 2 第二章MySQL 基礎(chǔ)管理

1.用戶管理

登錄
管理對象

1.2.1 用戶名:    
不要太長 , 和業(yè)務(wù)有關(guān)
emp_user01
grant all on *.* to wordpress@'%' identified '123';
1.2.2 白名單?
user@'10.0.0.56'
user@'%'
user@'10.0.0.%'   255.255.255.0   24位
user@'10.0.0.0/255.255.254.0'     23位
user@'10.0.0.5%'    50-59
user@'localhost'  本地
1.2.3 常用
user@'10.0.0.%'
user@'10.0.0.0/255.255.254.0' 
user@'10.0.0.5%'    50-59
user@'localhost'  本地
創(chuàng)建用戶:
mysql> CREATE USER  oldguo@'10.0.0.%' IDENTIFIED BY '123';
查詢用戶:
mysql> select user,host from mysql.user;
mysql> select user,host,authentication_string  from mysql.user;
修改用戶的密碼
mysql> alter user oldguo@'10.0.0.%' identified by '123456';
刪除用戶
mysql> drop user oldzhang@'10.0.0.%';

ps: 8.0+ 版本必須先創(chuàng)建用戶再授權(quán)永高。
    8.0以前版本授權(quán)時同時可以創(chuàng)建用戶隧土。

2.權(quán)限管理

2.1 MySQL權(quán)限列表
mysql> show privileges;   #權(quán)限清單
2.2 # 權(quán)限語法格式
GRANT  權(quán)限   ON 權(quán)限作用范圍   TO 用戶   IDENTIFIED BY '123' with grant option;
權(quán)限作用范圍 :
*.*       ====>  一般是管理員會設(shè)置的方法
oldguo.*  ====>  一般是業(yè)務(wù)用戶會設(shè)置的方法
oldguo.t1 ====>  一般是業(yè)務(wù)用戶戶設(shè)置的方法 (具體到那個表)  

2.3 企業(yè)授權(quán)案例
(1)授權(quán)一個管理員用戶oldguo,可以從10網(wǎng)段任意地址登錄管理數(shù)據(jù)庫 
GRANT  ALL  ON *.*    TO oldguo@'10.0.0.%'   IDENTIFIED BY '123'  with grant option;
(2)授權(quán)一個業(yè)務(wù)用戶app,可以從10網(wǎng)段地址訪問app庫的所有表 
grant select,update,insert,delete ON app.* TO app@'10.0.0.%'   IDENTIFIED BY '123' ;
(3)授權(quán)一個開發(fā)用戶dev,可以對dev庫進(jìn)行業(yè)務(wù)開發(fā)(開發(fā)的權(quán)限一般為除了server admin之外的)
2.4 root管理員密碼忘記或被篡改如何處理?
(1) 關(guān)閉數(shù)據(jù)庫,啟動到"單用戶"模式
[root@db01 data_3306]# systemctl stop mysqld
[root@db01 data_3306]# mysqld_safe  --skip-grant-tables  --skip-networking  &      #--skip-networking關(guān)閉遠(yuǎn)程tcp連接(不提供端口號)只從本地登錄     --skip-grant-tables  不開啟驗證模塊
(2) 無密碼登錄MySQL 
[root@db01 data_3306]# mysql
mysql> alter user root@'localhost' identified by '123456';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql> flush privileges;   #手動將用戶授權(quán)表加載到系統(tǒng)內(nèi)存中
mysql> alter user root@'localhost' identified by '123456';

(3) 重啟數(shù)據(jù)庫到正常模式
[root@db01 data_3306]# systemctl restart mysqld
2.5 查詢用戶權(quán)限
mysql> show grants for oldshun@'10.0.0.%';

2.6 回收權(quán)限
mysql> revoke delete,drop   on *.* from 'oldshun'@'10.0.0.%';
3. MySQL的連接管理
3.1 自帶客戶端工具 
3.1.1 mysql 
-u  用戶名 
-p  密碼
-h  IP
-P  端口
-S  socket位置
-e  免交互
<   導(dǎo)入SQL腳本
例子: 
(1) TCP連接串遠(yuǎn)程登錄
注:需要提前創(chuàng)建好遠(yuǎn)程用戶
mysql> grant all on *.* to oldguo@'10.0.0.%' identified by '123';
[root@db01 data_3306]# mysql -uroot -p -h 10.0.0.51 -P 3306
(2) Socket連接方式
注:需要提前創(chuàng)建好localhost用戶
mysql> grant all on *.* to oldguo@'localhost' identified by '123';
[root@db01 data_3306]# mysql -uoldguo -p -S /tmp/mysql.sock 
Enter password: 

如何驗證一個用戶是通過本地還是遠(yuǎn)程和登錄的.
show processlist;

(3) 免交互執(zhí)行命令
[root@db01 ~]# mysql -uroot -p -e "show processlist"
Enter password: 
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host      | db   | Command | Time | State    | Info             |
+----+------+-----------+------+---------+------+----------+------------------+
|  5 | root | localhost | NULL | Query   |    0 | starting | show processlist |
+----+------+-----------+------+---------+------+----------+------------------+

(4) 導(dǎo)入SQL腳本 
[root@db01 ~]# mysql -uroot -p < t100w.sql
Enter password: 
mysql> source /root/world.sql

3.1.2 mysqladmin
(1) 修改密碼
[root@db01 ~]# mysqladmin -uroot -p123456 password 123
[root@db01 ~]# mysql -uroot -p123

(2) 關(guān)閉數(shù)據(jù)庫 
[root@db01 ~]# mysqladmin -uroot -p123  shutdown 
4. MySQL的啟動關(guān)閉
systemctl ---> mysql.server start 
-----> mysqld_safe  ----> mysqld
5.1 初始化配置方法
源碼安裝定制    <    初始化配置文件  <    命令行啟動時定制(優(yōu)先級最高)

5.2 初始化配置文件
[root@db01 data_3306]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 

先調(diào)用/etc/my.cnf 再調(diào)用/etc/mysql/my.cnf  /usr/local/mysql/etc/my.cnf      ~/.my.cnf   后面會復(fù)制前面

建議一個mysql實例一個配置文件

5.3 配置文件書寫格式
[root@db01 data_3306]# cat /etc/my.cnf 
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3306
server_id=6
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

標(biāo)簽項  ====> [mysqld]
服務(wù)器端 [server]: [mysqld],[mysqld_safe]  ====> 影響到MySQL啟動
客戶端 [clinet] : [mysql] ,[mysqldump]    ====> 影響本地客戶端程序
 
配置項  ====> key=value
5.4 自定制初識化配置文件位置
[root@db01 ~]# cat /opt/a.cnf 
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3306
server_id=6
socket=/tmp/a.sock
[root@db01 ~]# pkill mysqld
[root@db01 ~]#  mysqld --defaults-file=/opt/a.cnf &   #啟動數(shù)據(jù)庫的方式
[root@db01 ~]# mysql  -S  /tmp/a.sock

6. 多實例的規(guī)劃和配置
分布式架構(gòu)中應(yīng)用廣泛
6.1 端口和目錄
mkdir -p /data/mysql/data_{3307,3308,3309} 
2. 配置文件準(zhǔn)備 
cat > /data/mysql/my3307.cnf <<EOF
[mysqld]
user=mysql
port=3307
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3307
server_id=7
socket=/tmp/mysql3307.sock
EOF
cat > /data/mysql/my3308.cnf <<EOF
[mysqld]
user=mysql
port=3308
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3308
server_id=8
socket=/tmp/mysql3308.sock
EOF
cat > /data/mysql/my3309.cnf <<EOF
[mysqld]
user=mysql
port=3309
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3309
server_id=9
socket=/tmp/mysql3309.sock
EOF
3. 授權(quán) 
[root@db01 ~]# chown -R mysql.mysql /data/
4. 初始化數(shù)據(jù) 
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3307
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3308
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3309
5. 啟動多實例 
[root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3307.cnf &
[root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3308.cnf &
[root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3309.cnf &
[root@db01 mysql]# netstat -tulnp

6. 使用 systemd 管理多實例
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/mysql57/bin/mysqld --defaults-file=/data/mysql/my3307.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/mysql57/bin/mysqld --defaults-file=/data/mysql/my3308.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/mysql57/bin/mysqld --defaults-file=/data/mysql/my3309.cnf
LimitNOFILE = 5000
EOF

pkill mysqld  
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309

第三章 SQL 基礎(chǔ)

1. SQL介紹
1.1 簡介
結(jié)構(gòu)化查詢語言.  
1.2 SQL標(biāo)準(zhǔn) 
SQL89   SQL92  SQL99  SQL03  SQL05  
1.3 SQL_MODE
除數(shù)為零
日期
mysql> select @@sql_mode;
1.4 SQL 類型
DDL : 數(shù)據(jù)定義語言 : 庫名,庫屬性,表名,表屬性,列(列名,列屬性)
DCL : 數(shù)據(jù)控制語言 : 權(quán)限
DML : 數(shù)據(jù)操作語言 : 數(shù)據(jù)行
DQL : 數(shù)據(jù)查詢語言 : 數(shù)據(jù)行

1.5 SQL功能
管理,操作數(shù)據(jù)庫對象: 
    庫:  庫名,庫屬性
    表:  表名,表屬性,列(列名,列屬性),數(shù)據(jù)行

2. MySQL規(guī)范性存儲限制 

2.1 字符集  utf8   utf8mb4
utf8: 最大字符長度3個 ,其中中文三個字符  
utf8mb4 :  最大字節(jié)長度4個. 可以存儲emoji表情字符.
2.2
# mysql 中支持的字符集
mysql> show charset;
# mysql 中的排序規(guī)則
show  collation;   #校對規(guī)則

默認(rèn)是大小寫不敏感.

2.3 數(shù)據(jù)類型
2.3.1 數(shù)字類型
tinyint(按需分派長度)   1字節(jié)長度數(shù)字=8字符  ===> 11111111  ===> 0-2^8-1 ===> -2^7-2^7-1 (3位)
int       4字節(jié)長度=32字節(jié)      ====> 0-2^32-1 ====> -2^31 - 2^31-1  (10位數(shù))
bigint    8字節(jié)長度      ====> 0-2^64-1 ====> -2^63 - 2^63-1  (20位數(shù))

2.3.2 字符串
char(10)  : 定長類型,最多10個字節(jié),占用存儲空間一定.最多存儲255個字符.
varchar(10): 
    變長類型,最多10個字符,按需分配存儲空間.
    需要額外1個字符或2個字符存儲字符長度
    
因素: 變長的字符串列,90%幾率都是varchar
具體原因是什么?
節(jié)省空間,還有沒有別的原因?
遺留的問題..

enum('m','f'):枚舉類型
      1   2 
      
2.3.3 時間類型
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ū)的影響


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市饲宛,隨后出現(xiàn)的幾起案子皆愉,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幕庐,死亡現(xiàn)場離奇詭異久锥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)异剥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門奴拦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人届吁,你說我怎么就攤上這事捧存《ㄏ酰” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長博烂。 經(jīng)常有香客問我,道長宠互,這世上最難降的妖魔是什么浴讯? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮究流,結(jié)果婚禮上辣吃,老公的妹妹穿的比我還像新娘。我一直安慰自己芬探,他們只是感情好神得,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著偷仿,像睡著了一般哩簿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酝静,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天节榜,我揣著相機(jī)與錄音,去河邊找鬼别智。 笑死宗苍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的薄榛。 我是一名探鬼主播讳窟,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛇数!你這毒婦竟也來了挪钓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耳舅,失蹤者是張志新(化名)和其女友劉穎碌上,沒想到半個月后倚评,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馏予,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年天梧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霞丧。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡呢岗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛹尝,到底是詐尸還是另有隱情后豫,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布突那,位于F島的核電站挫酿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏愕难。R本人自食惡果不足惜早龟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猫缭。 院中可真熱鬧葱弟,春花似錦、人聲如沸猜丹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽居触。三九已至妖混,卻和暖如春老赤,著一層夾襖步出監(jiān)牢的瞬間轮洋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工抬旺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弊予,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓开财,卻偏偏與公主長得像汉柒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子责鳍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容