MySQL數(shù)據(jù)庫-第二章:MySQL基礎(chǔ)管理

  1. 用戶管理

1.1 作用

登錄

管理對(duì)象

1.2 長成什么樣?

用戶名@'白名單'

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'  本地

常用:

user@'10.0.0.%'

user@'10.0.0.0/255.255.254.0'

user@'10.0.0.5%'    50-59

user@'localhost'  本地

1.2.3 用戶管理

創(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 oldguo@'10.0.0.%';

說明:

8.0+ 版本: 必須先創(chuàng)建用戶再授權(quán).

8.0以前: 可以grant 授權(quán)時(shí)自動(dòng)創(chuàng)建用戶.

  1. 權(quán)限管理

2.1 MySQL權(quán)限列表

mysql> show privileges;

2.2 授權(quán)和回收權(quán)限

GRANT 權(quán)限 ON 權(quán)限作用范圍 TO 用戶 IDENTIFIED BY '123' with grant option;

權(quán)限 :

ALL :

Alter                 

Alter routine         

Create               

Create routine       

Create temporary tables

Create view           

Create user           

Delete               

Drop                 

Event                 

Execute               

File                 

Grant option         

Index                 

Insert               

Lock tables           

Process               

Proxy                 

References           

Reload               

Replication client   

Replication slave     

Select               

Show databases       

Show view             

Shutdown             

Super                 

Trigger               

Create tablespace     

Update               

Usage                 

權(quán)限作用范圍 :

. ====> 一般是管理員會(huì)設(shè)置的方法

oldguo.* ====> 一般是業(yè)務(wù)用戶會(huì)設(shè)置的方法

oldguo.t1 ====> 一般是業(yè)務(wù)用戶戶設(shè)置的方法

2.3 企業(yè)授權(quán)案例

(1)授權(quán)一個(gè)管理員用戶oldguo,可以從10網(wǎng)段任意地址登錄管理數(shù)據(jù)庫

GRANT  ALL  ON *.*    TO oldguo@'10.0.0.%'  IDENTIFIED BY '123'  with grant option;

(2)授權(quán)一個(gè)業(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)一個(gè)開發(fā)用戶dev,可以對(duì)dev庫進(jìn)行業(yè)務(wù)開發(fā)

2.4 root管理員密碼忘記或被篡改如何處理?

(1) 關(guān)閉數(shù)據(jù)庫,啟動(dòng)到"單用戶"模式

[root@db01 data_3306]# systemctl stop mysqld
[root@db01 data_3306]# mysqld_safe  --skip-grant-tables  --skip-networking  &

(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;

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 app@'10.0.0.%';

2.6 回收權(quán)限

mysql> revoke delete,drop on app.* from 'app'@'10.0.0.%';
  1. 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:

如何驗(yàn)證一個(gè)用戶是通過本地還是遠(yuǎn)程和登錄的.

show processlist;

(3) 免交互執(zhí)行命令

[root@db01 ~]# mysql -uroot -p -e "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

mysqldump(備份恢復(fù))

3.2 第三方開發(fā)工具

sqlyog

navicat

workbench

3.3 應(yīng)用程序連接

php-mysql

pip3 install mysql

jar

go
  1. MySQL的啟動(dòng)關(guān)閉
systemctl ---> mysql.server start

-----> mysqld_safe  ----> mysqld
  1. MySQL的初始化配置

5.1 初始化配置方法

源碼安裝定制 < 初始化配置文件 < 命令行啟動(dòng)時(shí)定制

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

建議一個(gè)mysql實(shí)例一個(gè)配置文件

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)簽項(xiàng) ====> [mysqld]

服務(wù)器端 [server]: [mysqld],[mysqld_safe] ====> 影響到MySQL啟動(dòng)

客戶端 [clinet] : [mysql] ,[mysqldump] ====> 影響本地客戶端程序

配置項(xiàng) ====> key=value

5.4 自定制初識(shí)化配置文件位置

mysqld --defaults-file=/opt/a.cnf &
  1. 多實(shí)例的規(guī)劃和配置

分布式架構(gòu)中應(yīng)用廣泛

6.1 端口和目錄

rm -rf /data/mysql/data_{3307,3308,3309}

mkdir -p /data/mysql/data_{3307,3308,3309}
  1. 配置文件準(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
  1. 授權(quán)
[root@db01 ~]# chown -R mysql.mysql /data/
  1. 初始化數(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
  1. 啟動(dòng)多實(shí)例
[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
  1. 使用 systemd 管理多實(shí)例
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ù)庫對(duì)象:

庫: 庫名,庫屬性

表: 表名,表屬性,列(列名,列屬性),數(shù)據(jù)行

  1. MySQL規(guī)范性存儲(chǔ)限制

2.1 字符集Charset

utf8 : 最大字節(jié)長度3個(gè).

utf8mb4 : 最大字節(jié)長度4個(gè). 可以存儲(chǔ)emoji表情字符.

mysql> show charset;

2.2 排序規(guī)則 (校對(duì)規(guī)則)

show collation;

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

utf8mb4_general_ci

utf8mb4_bin

2.3 數(shù)據(jù)類型

2.3.1 數(shù)字類型

tinyint 1字節(jié)長度數(shù)字 ===> 11111111 ===> 0-2^8-1 ===> -27-27-1 (3位)

int 4字節(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個(gè)字符,占用存儲(chǔ)空間一定.最多存儲(chǔ)255個(gè)字符.

varchar(10):

變長類型,最多10個(gè)字符,按需分配存儲(chǔ)空間.

需要額外1個(gè)字符或2個(gè)字符存儲(chǔ)字符長度

因素: 變長的字符串列,90%幾率都是varchar

具體原因是什么?

節(jié)省空間,還有沒有別的原因?

遺留的問題..

enum('m','f')

1 2

2.3.3 時(shí)間類型

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

2.3.4 二進(jìn)制類型

2.3.5 JSON(8.0)

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

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