最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

mysql安裝及基本操作

2023-02-18 13:12 作者:bili_39183997178  | 我要投稿

1 清除沖突軟件mariadb (如果安裝了的話)

rpm? -q? mariadb-server? mariadb

????????? systemctl? stop? mariadb

????????? rpm? -e? --nodeps? mariadb? mariadb-server

????????? rm? -rf? /etc/my.cnf?

????????? rm? -rf? /var/lib/mysql/*

?2 安裝軟件mysql 社區(qū)開源版軟件

??????? tar? -xf mysql-5.7.17.tar

??????? yum -y install mysql-community-*.rpm

?3 啟動服務(wù)并設(shè)置開機運行 查看進(jìn)程和端口

??????? systemctl? start mysqld

??????? systemctl? enable mysqld

??????? netstat? -utnlp? | grep? 3306? 等效與?? ss? -utnlp? | grep? 3306

??????? ps -C mysqld?? 等效于? ps? aux? |? grep?? mysqld

? 4 查看連接MySQL服務(wù)初始密碼

??????? [root@host50 ~]# grep password? /var/log/mysqld.log | tail -1

2021-12-06T01:47:49.262056Z 1 [Note] A temporary password is generated for root@localhost: p.7jr.uy.aiZ

5 使用初始密碼連接服務(wù)

[root@host50 ~]# mysql -hlocalhost -uroot -p'p.7jr.uy.aiZ'

?6 修改登錄密碼(服務(wù)強制修改且修改的密碼要符合服務(wù)要求的復(fù)雜度)

mysql>? alter user?? root@"localhost" identified by "123qqq...A";

?7 斷開連接

mysql> exit;

臨時修改密碼的復(fù)雜度

show variables like "%password%";? 查看與密碼相關(guān)的配置項

mysql> set global validate_password_policy=0;? 修改密碼等級為0

mysql> set global validate_password_length=6;? 修改最小密碼長度

永久修改密碼策略

vim /etc/my.cnf? (永久配置)把修改 添加到配置文件里 數(shù)據(jù)庫服務(wù)重啟了 依然有效

[mysqld]

validate_password_policy=0

validate_password_length=6

#破解數(shù)據(jù)庫root密碼

?1.vim /etc/my.cnf

[mysqld]

#validate_password_policy=0

#validate_password_length=6

skip-grant-tables? #跳過授權(quán)庫MySQL庫啟動服務(wù) 作用連接服務(wù)不需要輸入密碼

mysql> flush privileges;? ?使修改配置生效

2. 線上破解密碼

? ?

步驟如下:

??????????????????????????? 1? 拷貝其他數(shù)據(jù)庫服務(wù)器 管理員root用戶能正常連接數(shù)據(jù)庫服務(wù)的mysql庫 覆蓋本機的mysql庫

?????????????????????????????????? ?。。。ysql庫存放的是 數(shù)據(jù)庫服務(wù)器的用戶和密碼?。?!?

??????????????????????????? 2? 查看mysql服務(wù) 父進(jìn)程的pid

??????????????????????????? 3? 給mysql服務(wù)的父進(jìn)程發(fā)送 SIGHUP信息 (作用重新加載數(shù)據(jù)庫目錄下的文件 ,可以重新識別 mysql庫里的用戶和密碼)

??????????????????????????? 4? 使用破解后的密碼登錄(密碼和root用戶能正常登錄服務(wù)主機的的root密碼一樣)

? ? scp -r 192.168.4.51:/var/lib/mysql/mysql? /var/lib/mysql/

[root@host50 ~]# which? pstree || yum? -y install psmisc

[root@host50 ~]# pstree -p | grep mysqld | head? -1

[root@host50 ~]# kill? -SIGHUP? 1603

[root@host50 ~]# mysql -hlocalhost -uroot -pNSD2021...a

? mysqladmin? -uroot??? -p舊密碼?? password? 新密碼


安裝圖形軟件???

在數(shù)據(jù)庫服務(wù)器安裝圖形軟件 ,通過連接圖形軟件,對數(shù)據(jù)庫做管理)

要求:在IP地址192.168.4.50主機安裝phpmyadmin軟件


步驟一:安裝phpmyadmin軟件。

????????????????? 1) 部署phpmyadmin運行環(huán)境 LAP? (L 指的是 linux 系統(tǒng)? A 指的是apache?? P 指的是PHP)

????????????????? 2) 安裝phpmyadmin軟件

????????????????? 3)? 修改配置文件 :? 修改phpmyadmin軟件的配置文件

? ? 365? yum -y install httpd php? php-mysql

? 367? systemctl? start httpd? ; systemctl? enable httpd

? 371? tar -xf phpMyAdmin-2.11.11-all-languages.tar.gz

? 373? mv phpMyAdmin-2.11.11-all-languages /var/www/html/phpmyadmin

? 374? cd /var/www/html/phpmyadmin

? 378 ?cp config.sample.inc.php? config.inc.php? 創(chuàng)建主配置文件

? 380? vim +17 config.inc.php? #在''號里添加plj123

?步驟二:客戶端通過訪問phpmyadmin軟件管理數(shù)據(jù)庫。

????????????????? ? 打開真機的瀏覽器 輸入

????????????????? ? 訪問的網(wǎng)址? http://192.168.4.50/phpmyadmin


相關(guān)參數(shù)(必須熟知 )

主配置文件? /etc/my.cnf???

數(shù)據(jù)庫目錄?? /var/lib/mysql

服務(wù)的進(jìn)程名/端口?? mysqld/3306

進(jìn)程所有者和所屬組??? mysql/mysql

數(shù)據(jù)傳輸協(xié)議??? tcp

錯誤日志文件名 /var/log/mysqld.log

基本命令:

mysql> show? databases;??? 顯示服務(wù)器上已有的庫(文件夾)

mysql> select user();? 顯示當(dāng)前登錄的用戶名和客戶端地址

mysql> select??? version();? 顯示數(shù)據(jù)庫服務(wù)軟件的版本號

mysql> select database();?? 顯示當(dāng)前所在的庫

mysql> use mysql;?? 進(jìn)入到mysql庫里

mysql> show tables;? 顯示所在庫下已有的表 (表就是用來存數(shù)據(jù)的文件 )

mysql> select @@version;? 查看環(huán)境變量

mysql> desc tarena.user;? 查看表結(jié)構(gòu)

mysql>select name as 用戶名 , homedir 家目錄 from tarena.user;? ?取別名

mysql> select concat(name,"-",uid)? as? 用戶信息? from tarena.user;? 拼接

mysql> select distinct shell from? tarena.user;? ?不顯示重復(fù)項


數(shù)值比較 符號?? =????? !=?????? >?????? >=?????? <?????? <=

????????????? 相等??? 不相等?? 大于?? 大于等于??? 小于??? 小于等于

字符比較 符號?? =?? !=?

空?????? is? null????? 表頭下沒有數(shù)據(jù)

非空?????? is? not null? 表頭下有數(shù)據(jù)

范圍匹配條件?? in?? 、? not? in? 、? between? 數(shù)字1 and?? 數(shù)字2??


模糊匹配條件?? where? 字段名?? like? ‘表達(dá)式’

????????????????? ? 統(tǒng)配符號?

????????????????? ? _? 表示 1個字符

????????????????? ? %表示零個或多個字符

正則匹配?? 使用正則表達(dá)式做判斷條件??????? 格式:?? 字段名 regexp? '正則表達(dá)式'

??????????????? ^ 匹配行首

??????????????? $ 匹配行尾

??????????????? [] 匹配范圍內(nèi)任意一個

??????????????? *? 前邊的表達(dá)式出現(xiàn)零次或多次

??????????????? |? 或者


邏輯匹配? 就是有多個判斷條件

邏輯與?? and? &&??????? 多個判斷條件必須同時成立

邏輯或?? or?? ||??????? 多個判斷條件其中某個條件成立即可

邏輯非?? not? !???????? 取反

()? 提高優(yōu)先級? 作用:改變執(zhí)行順序


表管理

建庫的基本命令?? create? database? 庫名;

create? table? 庫名.表名(

表頭名1? 數(shù)據(jù)類型,

表頭名2? 數(shù)據(jù)類型,

表頭名3? 數(shù)據(jù)類型,

表頭名4? 數(shù)據(jù)類型

);

Create Table: CREATE TABLE `t1` (

? `level` tinyint(3) unsigned DEFAULT NULL,

? `money` double DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1? 西歐字符編碼

?命令格式: alter? table? 庫名.表名?? 操作命令;

?????????? 可以做哪些修改呢?(操作命令)

???????? 添加新表頭?? add????????

???????? 刪除表頭?? drop?????????

???????? 修改表頭存儲數(shù)據(jù)的 數(shù)據(jù)類型? modify

???????? 修改表頭名? change

???????? 修改表名? rename

mysql> alter table studb.stu rename studb.stuinfo;? 修改表名

mysql> alter table studb.stuinfo drop age ;? 刪除字段

mysql> alter table studb.stuinfo add? mail? char(30) ; 添加在末尾

添加在指定位置

?mysql> alter table? studb.stuinfo add? number? char(9) first , add? school char(10) after name;

mysql> alter table? studb.stuinfo?? 修改字段類型

??? -> modify

??? -> mail varchar(50) not null default "plj@tedu.cn";

?mysql> alter table studb.stuinfo change? class? class_name char(9) ; 修改表頭名

使用modify? 修改表頭的位置?

mysql> alter? table studb.stuinfo? modify age int? after name ;?


表頭和數(shù)據(jù)復(fù)制都復(fù)制的

命令格式?create? table? 庫名.表名?? select? *? from? 庫名.表名 ;

?僅僅復(fù)制表頭命令格式:(只復(fù)制表結(jié)構(gòu))

命令格式? CREATE? TABLE 庫.表?? LIKE? 庫.表


管理表記錄 :

對表中存儲的行做管理 ,

操作包括? 查看select?? 插入 insert into?? 更新 update? 刪除 delete

添加行?? insert? into

修改?? ??update

刪除行? ?delete

mysql> select? * from? studb.stuinfo;

mysql> insert into studb.stuinfo?

??? -> values

??? -> ("nsd211102" , "jim",21,"boy"),("nsd211103","lucy",18,"girl");

?

命令格式: update? 庫名.表名?? set? 字段名 =? 值 ,? 字段名 =? 值 ;

僅刪除符合條件的行?? (刪除命令有篩選條件)?

delete?? from? 庫.表? where? 篩選條件;

注意 也可以使用? truncate? table? 庫.表; 刪除表里的記錄

?????????????? ??

truncate 與 delete? 刪除記錄的區(qū)別?。?!? (要知道 )

- TRUNCATE不支持WHERE條件

- 自增長列,TRUNCATE后從1開始;DELETE繼續(xù)編號

- TRUNCATE不能回滾,DELETE可以

- 效率略高于DELETE

?

字符類型??? (表頭下存儲的是漢字或者是英文字母)?

char(字符個數(shù))??? 定長字符類型(固定長度)???? 存儲范圍 1-255字符? ?補空格

varchar(字符個數(shù)) 變長????? ?(長度不固定)??? 存儲范圍 1-65535字符 (有效存儲范圍到65532)? 不會補空格

一個英文字母 是一個字符

一個漢字也是一個字符

?char 和 varchar 共同點? 都不能超出指定的字符個數(shù)

char 和 varchar 不同點? 存儲的字符個數(shù)小于指定的字符個數(shù)時處理的方式不一樣,


枚舉類型??? 給表頭賦值時 ,值必須在類型規(guī)定的范圍內(nèi)選擇

單選??? enum(值1,值2,值3 ....)

多選??? set(值1,值2,值3 ....)


日期時間類型? 表頭存儲與日期時間格式的數(shù)據(jù)

年??????? year?????? YYYY???? 2021

日期??? date??????? YYYYMMDD??? 20211104

時間??? time?????? HHMMSS???????? 143358? ??

日期時間(既有日期又有時間)? ? datetime?? 或? timestamp? ??

timestamp類型????? 不賦值 使用系統(tǒng)時間自動賦值

datetime類型???????? 不賦值? 使用null? 賦值

? ? ?datetime?? 與? timestamp? 的區(qū)別?

? ? 第一個區(qū)別是存儲范圍不一樣 (datetime存儲范圍大? timestamp范圍?。?/p>

? ? ?存儲數(shù)據(jù)的方式不一樣

? 使用2位數(shù)給year的表頭賦值也是可以的? 但會自動補全4位數(shù)

?01-69? 之間的數(shù)字使用20補全4位數(shù)的年 2001~2069

?70-99? 之間的數(shù)字使用19補全4位數(shù)的年 1970~1999

?

#查看默認(rèn)的檢索目錄

mysql> show variables like? "secure_file_priv";

第二? 修改數(shù)據(jù)庫服務(wù)默認(rèn)的檢索目錄

[root@host50 ~]# vim /etc/my.cnf

[mysqld]

secure_file_priv=/myload????? #手動添加

數(shù)據(jù)導(dǎo)入格式:

mysql>? load?? data? infile?? "/檢索目錄/文件名"?? into? table??? 庫名.表名??

fields? terminated by? "文件中列的間隔符號"??

lines?? terminated by?? "\n"? ;

數(shù)據(jù)導(dǎo)出命令格式1)??

select?? 字段名列表 from? 庫.表?? where? 條件? into? outfile?? "/檢索命令名/文件名" ;

?數(shù)據(jù)導(dǎo)出命令格式2)??

select?? 字段名列表 from? 庫.表?? where? 條件?

into? outfile?? "/檢索命令名/文件名"? fields? terminated by? "符號" ;



一、字段約束

字段約束的作用是什么?

設(shè)置在表頭上 ,用來限制字段賦值

字段都有哪些約束?(每一種約束都有各自的功能)

字段約束分類:

1、 PRIMARY KEY:主鍵,用于保證該字段的值具有唯一性并且非空。

?2、NOT NULL :非空,用于保證該字段的值不能為空。

?3、DEFAULT:默認(rèn)值,用于保證該字段有默認(rèn)值。

?4、UNIQUE:唯一索引,用于保證該字段的值具有唯一性,可以為空。

?5、 FOREIGN KEY:外鍵,用于限制兩個表的關(guān)系,用于保證該字段的值必須來自于主表的關(guān)聯(lián)列的值,在從表添加外鍵約束,用于引用主表中某些的值。

?建表時,創(chuàng)建主鍵 (2種語法格式 要記?。?/p>

語法格式1

create? table? 庫.表( 字段名 類型? primary key? , 字段名 類型 , ..... );

語法格式2

create? table? 庫.表( 字段名 類型 , 字段名 類型 , primary key(字段名) );

刪除主鍵命令格式(要記住)向表頭下存儲數(shù)據(jù)不受主鍵的限制

mysql> alter? table?? 庫.表?? drop primary? key ;

添加主鍵命令格式(要記?。?/p>

mysql> alter? table? 庫.表? add? primary key(表頭名);

?主鍵與auto_increment連用:

當(dāng)給字段設(shè)置了auto_increment屬性后,插入記錄時,如果不給字段賦值

???????????????????? 字段會通過自加1的計算結(jié)果賦值

???????????????????? 要想讓字段有自增長 那么字段必須有主鍵的設(shè)置才可以


復(fù)合主鍵?

表中的多個表頭一起做主鍵

復(fù)合主鍵的約束方式: 多條記錄 主鍵字段的值不允許同時相同

創(chuàng)建有復(fù)合主鍵的表

create? table? db1.t39(cip?? varchar(15) , port? smallint ,?

status? enum("deny","allow") , primary key(cip,port)

刪除復(fù)合主鍵

mysql> alter table? db1.t39 drop primary key;

添加復(fù)合主鍵時 字段下的數(shù)據(jù)與主鍵約束沖突 不允許添加

mysql> alter table? db1.t39 add primary key(cip,port);


外鍵

核心思想:保證數(shù)據(jù)的一致性?

插入記錄時,字段值在另一個表字段值范圍內(nèi)選擇。

?外鍵的使用規(guī)則:

表存儲引擎必須是innodb (在進(jìn)階課程里講? 現(xiàn)在僅需要知道如何指定表使用innodb存儲引擎)

字段類型要一致

被參照字段必須要是索引類型的一種(通常是 primary key)

格式

create table?? 庫.表(表頭列表 ,

foreign key(表頭名)?? #指定外鍵

references 庫.表(表頭名)?? #指定參考的表頭名

on update? cascade?? #同步更新

on? delete? cascade? #同步刪除

)engine=innodb;

外鍵驗證:

?????? 1?? 外鍵字段的值必須在參考表字段值范圍內(nèi)

?????? 2?? 驗證同步更新( on update cascade)

?????? 3?? 驗證同步刪除( on? delete? cascade)?? 練習(xí)到? 17:18



mysql索引

ysql索引主要有三種結(jié)構(gòu):Btree、B+Tree 、Hash 。

?

索引優(yōu)點具體如下:

可以大大提高M(jìn)ySQL的檢索速度

索引大大減小了服務(wù)器需要掃描的數(shù)據(jù)量

索引可以幫助服務(wù)器避免排序和臨時表

索引可以將隨機IO變成順序IO

?索引的缺點:

雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,

如對表進(jìn)行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要保存數(shù)據(jù),還要保存索引文件。

建立索引會占用磁盤空間的索引文件。一般情況這個問題不太嚴(yán)重,但如果你在一個大表上創(chuàng)建了多種組合索引,索引文件的會膨脹很快。

如果某個數(shù)據(jù)列包含許多重復(fù)的內(nèi)容,為它建立索引就沒有太大的實際效果。

對于非常小的表,大部分情況下簡單的全表掃描更高效。

?

?索引的分類:

普通索引 (index)

不應(yīng)用任何限制條件的索引,該索引可以在任何數(shù)據(jù)類型中創(chuàng)建。

字段本身的約束條件可以判斷其值是否為空或唯一。

創(chuàng)建該類型索引后,用戶在查詢時,便可以通過索引進(jìn)行查詢。

?唯一索引 (unique)

使用UNIQUE參數(shù)可以設(shè)置唯一索引。

創(chuàng)建該索引時,索引的值必須唯一。

通過唯一索引,用戶可以快速定位某條記錄。

主鍵是一種特殊唯一索引。

?全文索引 (FULLTEXT)

使用FULLTEXT參數(shù)可以設(shè)置索引為全文索引。

全文索引只能創(chuàng)建在CHAR、VARCHAR或者TEXT類型的字段上。

查詢數(shù)據(jù)量較大的字符串類型的字段時,使用全文索引可以提高查詢速度。

在默認(rèn)情況下,應(yīng)用全文搜索大小寫不敏感。如果索引的列使用二進(jìn)制排序后,

可以執(zhí)行大小寫敏感的全文索引。

?單列索引

顧名思義,單列索引即只對應(yīng)一個字段的索引。

應(yīng)用該索引的條件只需要保證該索引值對應(yīng)一個字段即可。

可以包括普通、唯一、全文索引。

多列索引

多列索引是在表的多個字段上創(chuàng)建一個索引。

該索引指向創(chuàng)建時對應(yīng)的多個字段,用戶可以通過這幾個字段進(jìn)行查詢。

要想應(yīng)用該索引,用戶必須使用這些字段中的第一個字段。

? ? ?2.4 普通索引(index)的管理

普通索引(index)的使用規(guī)則(需要牢記)具體如下:

?一個表中可以有多個index

?字段的值可以重復(fù),且可以賦值為null

?通常在where條件中的字段上配置Index

?index索引字段的標(biāo)志為mul

?創(chuàng)建普通索引(index)

????????????? 1)建表時創(chuàng)建索引命令格式???

CREATE TABLE? 庫.表(

字段列表 ,

INDEX(字段名) ,

INDEX(字段名) ,

);

查看索引詳細(xì)信息?? show index?? from?? 庫.表;

刪除索引?

命令格式?? DROP? INDEX?? 索引名?? ON? 庫.表;

在已有表添加索引命令格式?

CREATE? INDEX? 索引名? ON? 庫.表(字段名);

?explain命令 : ??? ?可以查看執(zhí)行的查詢select語句, 是否使用到索引做查詢了



mysql用戶管理:

1? 用戶授權(quán)

1.3? 用戶授權(quán)命令格式

GRANT 權(quán)限列表 ON 庫名 TO 用戶名@"客戶端地址"?? IDENTIFIED? BY? “密碼”??? WITH GRANT OPTION;

? ? ? 權(quán)限列表? : 就是添加的用戶對指定的庫名具有的訪問權(quán)限表示方式(就是學(xué)過的sql命令)

ALL??????? 表示所有權(quán)限? (表示所有命令)

USAGE??? 表示無權(quán)限? (除了查看之外啥權(quán)限都沒有 , 看的命令show??? desc )

SELECT,UPDATE,INSERT????????? 表示只有個別權(quán)限

SELECT, UPDATE (字段1,字段N)?? 表示權(quán)限僅對指定字段有訪問權(quán)限


庫名? :添加的使用戶對服務(wù)器上的那些庫有訪問權(quán)限 可以表示的方式有:

*.*????????? 表示 所有庫所有表?? 第1個表示所有庫名? 第2個 表示所有表名

庫名.* ? ??表示一個庫下的所有表?? 例如 tarena.*

庫名.表名 ? 表是一張表?? 例如? tarena.user


客戶端地址:???? 表示網(wǎng)絡(luò)中的那些主機可以使用添加的用戶連接數(shù)據(jù)庫服務(wù)表示的方式有:

%? ? ????????? ?????表示網(wǎng)絡(luò)中的所有主機

192.168.4.%??? ? ?表示 192.168.4網(wǎng)段內(nèi)的所有主機

192.168.4.1???? ??表示僅僅是192.168.4.1?? 一臺主機

localhost????????? 表示數(shù)據(jù)庫服務(wù)器本機

?

WITH GRANT OPTION :?

讓添加的用戶也可以使用grant命令再添加用戶,但用戶本身要對mysql庫有insert的權(quán)限

權(quán)限撤銷 : 刪除已有授權(quán)用戶的權(quán)限?

命令格式如下

REVOKE 權(quán)限列表 ON 庫名 FROM? 用戶名@"客戶端地址";

注意 : 庫名的表示方式 要和 用戶授權(quán)時的表示方式一樣

? ? ?3 刪除添加的用戶

drop? user?? 用戶名@"客戶端地址";

?

查看用戶訪問權(quán)限

mysql> show grants for? root@"%";

mysql> set password for 用戶名@"客戶端地址"=password("新密碼");? ?#修改已有授權(quán)用戶的連接密碼


mysql安裝及基本操作的評論 (共 條)

分享到微博請遵守國家法律
井研县| 宁津县| 尼勒克县| 广东省| 兖州市| 阜宁县| 若尔盖县| 南木林县| 孟州市| 金塔县| 通化市| 东宁县| 固始县| 临朐县| 安福县| 承德市| 定陶县| 始兴县| 昌都县| 都昌县| 通海县| 东乡族自治县| 乐安县| 利辛县| 正阳县| 通州区| 大洼县| 济阳县| 高青县| 承德市| 普格县| 略阳县| 策勒县| 巴里| 察哈| 南木林县| 木兰县| 潞城市| 安陆市| 宿州市| 绥德县|