/etc/init.d/mysqld startservice mysqld startsystemctl start mysqld
lsof -i :3306netstat -lntup |grep 3306
設(shè)置密碼
mysql -uroot -ppassword -e "set passowrd for root = passowrd('passowrd')" mysqladmin -uroot passowrd "NEWPASSWORD"
更改密碼
mysqladmin -uroot passowrd oldpassowrd "NEWPASSWORD"use mysql;update user set passowrd = PASSWORD('newpassword') where user = 'root';flush privileges;
msyql 5.7以上版本修改默認密碼命令
alter user 'root'@'localhost' identified by 'root'
mysql -uroot -ppassword
show create database DB_NAME;
mysql -V mysql -uroot -ppassowrd -e "use mysql;select version();"
select user();
create database mingongge DEFAULT CHARSET GBK COLLATE gbk_chinese_ci;
grant all on mingongge.* to 'mingongge'@'localhost' identified by 'mingongge';
show grants for mingongge@localhost
select user from mysql.user;
use mingongge
create table test ( id int(4), name varchar(16) )ENGINE=innodb DEFAULT CHARSET=gbk;
desc test;show create table test\G
insert into test values('1','mingongge');
insert into test values('2','民工哥'),('3','mingonggeedu');
select * from test where name = 'mingongge';
update test set name = 'mgg' where id = '1';
alter table test add age tinyint(2) after id;
system mysqldump -uroot -pMgg123.0. -B mingongge >/root/mingongge_bak.sql
delete from test;select * from test;
drop table test;show tables;drop database mingongge;show databases;
system mysql -uroot -pMgg123.0.24.把庫表的GBK字符集修改為UTF8
alter database mingongge default character set utf8;alter table test default character set utf8;25.把id列設(shè)置為主鍵,在Name字段上創(chuàng)建普通索引
alter table test add primary key(id);create index mggindex on test(name(16));26.在字段name后插入手機號字段(shouji),類型char(11)
alter table test add shouji char(11);#默認就是在最后一列后面插入新增列27.所有字段上插入2條記錄(自行設(shè)定數(shù)據(jù))
insert into test values('4','23','li','13700000001'),('5','26','zhao','13710000001');28.在手機字段上對前8個字符創(chuàng)建普通索引
create index SJ on test(shouji(8));29.查看創(chuàng)建的索引及索引類型等信息
show index from test;show create table test\G #下面的命令也可以查看索引類型 show keys from test\G30.刪除Name,shouji列的索引
drop index SJ on test;drop index mggindex on test;31.對Name列的前6個字符以及手機列的前8個字符組建聯(lián)合索引
create index lianhe on test(name(6),shouji(8));32.查詢手機號以137開頭的,名字為zhao的記錄(提前插入)
select * from test where shouji like '137%' and name = 'zhao';33.查詢上述語句的執(zhí)行計劃(是否使用聯(lián)合索引等)
explain select * from test where name = 'zhao' and shouji like '137%'\G34.把test表的引擎改成MyISAM
alter table test engine=MyISAM;35.收回mingongge用戶的select權(quán)限
revoke select on mingongge.* from mingongge@localhost;36.刪除mingongge用戶
drop user migongge@localhost;37.刪除mingongge數(shù)據(jù)庫
drop database mingongge38.使用mysqladmin關(guān)閉數(shù)據(jù)庫
mysqladmin -uroot -pMgg123.0. shutdownlsof -i :330639.MySQL密碼丟了,請找回?
mysqld_safe --skip-grant-tables & #啟動數(shù)據(jù)庫服務(wù)mysql -uroot -ppassowrd -e "use mysql;update user set passowrd = PASSWORD('newpassword') where user = 'root';flush privileges;"(2)MySQL運維基礎(chǔ)知識面試問答題
面試題001:請解釋關(guān)系型數(shù)據(jù)庫概念及主要特點?
關(guān)系型數(shù)據(jù)庫模型是把復雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系,對數(shù)據(jù)的操作都是建立一個或多個關(guān)系表格上,大的特點就是二維的表格,通過SQL結(jié)構(gòu)查詢語句存取數(shù)據(jù),保持數(shù)據(jù)一致性方面很強大
面試題002:請說出關(guān)系型數(shù)據(jù)庫的典型產(chǎn)品、特點及應(yīng)用場景?
1、mysql 互聯(lián)網(wǎng)企業(yè)常用
2、oracle 大型傳統(tǒng)企業(yè)應(yīng)用軟件
3、 如數(shù)據(jù)備份、復雜連接查詢、一致性數(shù)據(jù)存儲等,還是使用MySQL或者其他傳統(tǒng)的關(guān)系型數(shù)據(jù)庫最合適面試題003:請解釋非關(guān)系型數(shù)據(jù)庫概念及主要特點?
非關(guān)系型數(shù)據(jù)庫也被稱為NoSQL數(shù)據(jù)庫,數(shù)據(jù)存儲不需有特有固定的表結(jié)構(gòu)
特點:高性能、高并發(fā)、簡單易安裝面試題004:請說出非關(guān)系型數(shù)據(jù)庫的典型產(chǎn)品、特點及應(yīng)用場景?
1、memcaced 純內(nèi)存
2、redis 持久化緩存
3、mongodb 面向文檔
如果需要短時間響應(yīng)的查詢操作,沒有良好模式定義的數(shù)據(jù)存儲,或者模式更改頻繁的數(shù)據(jù)存儲還是用NoSQL面試題005:請詳細描述SQL語句分類及對應(yīng)代表性關(guān)鍵字。
sql語句分類如下
DDL 數(shù)據(jù)定義語言,用來定義數(shù)據(jù)庫對象:庫、表、列
代表性關(guān)鍵字:create alter drop
DML 數(shù)據(jù)操作語言,用來定義數(shù)據(jù)庫記錄
代表性關(guān)鍵字:insert delete update
DCL 數(shù)據(jù)控制語言,用來定義訪問權(quán)限和安全級別
代表性關(guān)鍵字:grant deny revoke
DQL 數(shù)據(jù)查詢語言,用來查詢記錄數(shù)據(jù)
代表性關(guān)鍵字:select面試題006:請詳細描述char(4)和varchar(4)的差別
char長度是固定不可變的,varchar長度是可變的(在設(shè)定內(nèi))比如同樣寫入cn字符,char類型對應(yīng)的長度是4(cn+兩個空格),但varchar類型對應(yīng)長度是2
面試題007:如何創(chuàng)建一個utf8字符集的數(shù)據(jù)庫mingongge?
create database mingongge default character utf8 collate utf8_general_ci;面試題008:如何授權(quán)mingongge用戶從172.16.1.0/24訪問數(shù)據(jù)庫。
grant all on *.* to mingongge@'172.16.1.0/24' identified by '123456';面試題009:什么是MySQL多實例,如何配置MySQL多實例?
mysql多實例就是在同一臺服務(wù)器上啟用多個mysql服務(wù),它們監(jiān)聽不同的端口,運行多個服務(wù)進程,它們相互獨立,互不影響的對外提供服務(wù),便于節(jié)約服務(wù)器資源與后期架構(gòu)擴展
多實例的配置方法有兩種:
1、一個實例一個配置文件,不同端口
2、同一配置文件(my.cnf)下配置不同實例,基于mysqld_multi工具面試題010:如何加強MySQL安全,請給出可行的具體措施?
1、刪除數(shù)據(jù)庫不使用的默認用戶
2、配置相應(yīng)的權(quán)限(包括遠程連接)
3、不可在命令行界面下輸入數(shù)據(jù)庫的密碼
4、定期修改密碼與加強密碼的復雜度面試題011:MySQL root密碼忘了如何找回?
參考前面的回答
面試題012:delete和truncate刪除數(shù)據(jù)的區(qū)別?
前者刪除數(shù)據(jù)可以恢復,它是逐條刪除速度慢
后者是物理刪除,不可恢復,它是整體刪除速度快面試題013:MySQL Sleep線程過多如何解決?
1、可以殺掉sleep進程,kill PID
2、修改配置,重啟服務(wù)[mysqld] wait_timeout = 600interactive_timeout=30#如果生產(chǎn)服務(wù)器不可隨便重啟可以使用下面的方法解決set global wait_timeout=600set global interactive_timeout=30;面試題014:sort_buffer_size參數(shù)作用?如何在線修改生效?
在每個connection(session)第一次連接時需要使用到,來提訪問性能 set global sort_buffer_size = 2M面試題015:如何在線正確清理MySQL binlog?
MySQL中的binlog日志記錄了數(shù)據(jù)中的數(shù)據(jù)變動,便于對數(shù)據(jù)的基于時間點和基于位置的恢復
但日志文件的大小會越來越大,點用大量的磁盤空間,因此需要定時清理一部分日志信息
手工刪除:首先查看主從庫正在使用的binlog文件名稱
show master(slave) status\G
刪除之前一定要備份
purge master logs before'2017-09-01 00:00:00';
#刪除指定時間前的日志
purge master logs to'mysql-bin.000001';
#刪除指定的日志文件
自動刪除:
通過設(shè)置binlog的過期時間讓系統(tǒng)自動刪除日志
show variables like 'expire_logs_days';
et global expire_logs_days = 30;
#查看過期時間與設(shè)置過期時間面試題016:Binlog工作模式有哪些?各什么特點,企業(yè)如何選擇?
1.Row(行模式);
日志中會記錄成每一行數(shù)據(jù)被修改的形式,然后在slave端再對相同的數(shù)據(jù)進行修改
2.Statement(語句模式)
每一條修改的數(shù)據(jù)都會完整的記錄到主庫master的binlog里面,在slave上完整執(zhí)行在master執(zhí)行的sql語句
3.mixed(混合模式)
結(jié)合前面的兩種模式,如果在工作中有使用函數(shù) 或者觸發(fā)器等特殊功能需求的時候,使用混合模式
數(shù)據(jù)量達到比較高時候,它就會選擇 statement模式,而不會選擇Row Level行模式面試題017:誤操作執(zhí)行了一個drop庫SQL語句,如何完整恢復?
1、停止主從復制,在主庫上執(zhí)行鎖表并刷新binlog操作,接著恢復之前的全備文件(比如0點的全備)
2、將0點時的binlog文件與全備到故障期間的binlog文件合并導出成sql語句
mysqlbinlog --no-defaults mysql-bin.000011 mysql-bin.000012 >bin.sql
3、將導出的sql語句中drop語句刪除,恢復到數(shù)據(jù)庫中
mysql -uroot -pmysql123 < bin.sql面試題018:mysqldump備份使用了-A -B參數(shù),如何實現(xiàn)恢復單表?
-A 此參數(shù)作用是備份所有數(shù)據(jù)庫(相當于--all-databases)
-B databasename 備份指定數(shù)據(jù)(單庫備份使用)面試題019:詳述MySQL主從復制原理及配置主從的完整步驟
主從復制的原理如下:
主庫開啟binlog功能并授權(quán)從庫連接主庫,從庫通過change master得到主庫的相關(guān)同步信息,然后連接主庫進行驗證,主庫IO線程根據(jù)從庫slave線程的請求,從master.info開始記錄的位置點向下開始取信息,同時把取到的位置點和最新的位置與binlog信息一同發(fā)給從庫IO線程,從庫將相關(guān)的sql語句存放在relay-log里面,最終從庫的sql線程將relay-log里的sql語句應(yīng)用到從庫上,至此整個同步過程完成,之后將是無限重復上述過程
完整步驟如下:1、主庫開啟binlog功能,并進行全備,將全備文件推送到從庫服務(wù)器上
2、show master status\G 記錄下當前的位置信息及二進制文件名
3、登陸從庫恢復全備文件
4、執(zhí)行change master to 語句
5、執(zhí)行start slave and show slave status\G面試題020:如何開啟從庫的binlog功能?
修改配置文件加上下面的配置
log_bin=slave-binlog_bin_index=slave-bin.index需要重啟服務(wù)生效
面試題021:MySQL如何實現(xiàn)雙向互為主從復制,并說明應(yīng)用場景?
雙向同步主要應(yīng)用于解決單一主庫寫的壓力,具體配置如下
主庫配置[mysqld] auto_increment_increment = 2 #起始IDauto_increment_offset = 1 #ID自增間隔log-slave-updates從庫配置
[mysqld] auto_increment_increment = 2 #起始IDauto_increment_offset = 2 #ID自增間隔log-slave-updates主從庫服務(wù)器都需要重啟mysql服務(wù)
面試題022:MySQL如何實現(xiàn)級聯(lián)同步,并說明應(yīng)用場景?
級聯(lián)同步主要應(yīng)用在從庫需要做為其它數(shù)據(jù)庫的主庫
在需要做級聯(lián)同步的數(shù)據(jù)庫配置文件增加下面的配置即可log_bin=slave-binlog_bin_index=slave-bin.index面試題023:MySQL主從復制故障如何解決?
登陸從庫
1、執(zhí)行stop slave;停止主從同步
2、然后set global sql_slave_skip_counter = 1;跳過一步錯誤
3、最后執(zhí)行 start slave;并查看主從同步狀態(tài)需要重新進行主從同步操作步驟如下
進入主庫1、進行全備數(shù)據(jù)庫并刷新binlog,查看主庫此的狀態(tài)
2、恢復全備文件到從庫,然后執(zhí)行change master
3、開啟主從同步start slave;并查看主從同步狀態(tài)面試題024:如何監(jiān)控主從復制是否故障?
mysql -uroot -ppassowrd -e "show slave status\G" |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes 通過判斷Yes的個數(shù)來監(jiān)控主從復制狀態(tài),正常情況等于2面試題025:MySQL數(shù)據(jù)庫如何實現(xiàn)讀寫分離?
1、通過開發(fā)程序?qū)崿F(xiàn)
2、通過其它工具實現(xiàn)(如mysql-mmm)面試題026:生產(chǎn)一主多從從庫宕機,如何手工恢復?
1、執(zhí)行stop slave 或者停止服務(wù)
2、修復好從庫數(shù)據(jù)庫
3、然后重新操作主庫同步面試題027:生產(chǎn)一主多從主庫宕機,如何手工恢復?
1、登陸各個從庫停止同步,并查看誰的數(shù)據(jù)最新,將它設(shè)置為新主庫讓其它從庫同步其數(shù)據(jù)
2、修復好主庫之后,生新操作主從同步的步驟就可以了#需要注意的新的主庫如果之前是只讀,需要關(guān)閉此功能讓其可寫#需要在新從庫創(chuàng)建與之前主庫相同的同步的用戶與權(quán)限#其它從庫執(zhí)行change master to master_port=新主庫的端口,start slave面試題028:工作中遇到過哪些數(shù)據(jù)庫故障,請描述2個例子?
1、開發(fā)使用root用戶在從庫上寫入數(shù)據(jù)造成主從數(shù)據(jù)不一致,并且前端沒有展示需要修改的內(nèi)容(仍舊是老數(shù)據(jù))
2、內(nèi)網(wǎng)測試環(huán)境服務(wù)器突然斷電造成主從同步故障面試題029:MySQL出現(xiàn)復制延遲有哪些原因?如何解決?
1、需要同步的從庫數(shù)據(jù)太多
2、從庫的硬件資源較差,需要提升
3、網(wǎng)絡(luò)問題,需要提升網(wǎng)絡(luò)帶寬
4、主庫的數(shù)據(jù)寫入量較大,需要優(yōu)配置和硬件資源
5、sql語句執(zhí)行過長導致,需要優(yōu)化面試題030:給出企業(yè)生產(chǎn)大型MySQL集群架構(gòu)可行備份方案?
1、雙主多從,主從同步的架構(gòu),然后實行某個從庫專業(yè)做為備份服務(wù)器
2、編寫腳本實行分庫分表進行備份,并加入定時任務(wù)
3、最終將備份服務(wù)推送至內(nèi)網(wǎng)專業(yè)服務(wù)器,數(shù)據(jù)庫服務(wù)器本地保留一周
4、備份服務(wù)器根據(jù)實際情況來保留備份數(shù)據(jù)(一般30天)面試題031:什么是數(shù)據(jù)庫事務(wù),事務(wù)有哪些特性?企業(yè)如何選擇?
數(shù)據(jù)庫事務(wù)是指邏輯上的一組sql語句,組成這組操作的各個語句,執(zhí)行時要么成功,要么失敗
特點:具有原子性、隔離性、持久性、一致性面試題032:請解釋全備、增備、冷備、熱備概念及企業(yè)實踐經(jīng)驗?
全備:數(shù)據(jù)庫所有數(shù)據(jù)的一次完整備份,也就是備份當前數(shù)據(jù)庫的所有數(shù)據(jù)
增備:就在上次備份的基礎(chǔ)上備份到現(xiàn)在所有新增的數(shù)據(jù)
冷備:停止服務(wù)的基礎(chǔ)上進行備份操作
熱備:實行在線進行備份操作,不影響數(shù)據(jù)庫的正常運行
全備在企業(yè)中基本上是每周或天一次,其它時間是進行增量備份
熱備使用的情況是有兩臺數(shù)據(jù)庫在同時提供服務(wù)的情況,針對歸檔模式的數(shù)據(jù)庫
冷備使用情況有企業(yè)初期,數(shù)據(jù)量不大且服務(wù)器數(shù)量不多,可能會執(zhí)行某些庫、表結(jié)構(gòu)等重大操作時面試題033:MySQL的SQL語句如何優(yōu)化?
建立主鍵與增加索引
面試題034:企業(yè)生產(chǎn)MySQL集群架構(gòu)如何設(shè)計備份方案?
1、集群架構(gòu)可采用雙主多從的模式,但實際雙主只有一主在線提供服務(wù),兩臺主之間做互備
2、另外的從可做讀的負載均衡,然后將其中一臺抽出專業(yè)做備份面試題035:開發(fā)有一堆數(shù)據(jù)發(fā)給dba執(zhí)行,DBA執(zhí)行需注意什么?
1、需要注意語句是否有格式上的錯誤,執(zhí)行會出錯導致過程中斷
2、還需要注意語句的執(zhí)行時間是否過長,是否會對服務(wù)器負載產(chǎn)生壓力影響實際生產(chǎn)面試題036:如何調(diào)整生產(chǎn)線中MySQL數(shù)據(jù)庫的字符集。
1、首先導出庫的表結(jié)構(gòu) -d 只導出表結(jié)構(gòu),然后批量替換
2、導出庫中的所有數(shù)據(jù)(在不產(chǎn)生新數(shù)據(jù)的前提下)
3、然后全局替換set names = xxxxx
4、刪除原有庫與表,并新創(chuàng)建出來,再導入建庫與建表語句與所有數(shù)據(jù)面試題037:請描述MySQL里中文數(shù)據(jù)亂碼原理,如何防止亂碼?
服務(wù)器系統(tǒng)、數(shù)據(jù)庫、客戶端三方字符集不一致導致,需要統(tǒng)一字符
面試題038:企業(yè)生產(chǎn)MySQL如何優(yōu)化(請多角度描述)?
1、提升服務(wù)器硬件資源與網(wǎng)絡(luò)帶寬
2、優(yōu)化mysql服務(wù)配置文件
3、開啟慢查詢?nèi)罩救缓蠓治鰡栴}所在面試題039:MySQL高可用方案有哪些,各自特點,企業(yè)如何選擇?
高可用方案有
1、主從架構(gòu)
2、MySQL+MMM
3、MySQL+MHA
4、mysql+haproxy+drbd
5、mysql+proxy+amoeba面試題040:如何批量更改數(shù)據(jù)庫表的引擎?
通過mysqldump命令備份出一個sql文件,再使用sed命令替換
或者執(zhí)行下面的腳本進行修改#!/bin/shuser=root passwd=123456 cmd="mysql -u$user -p$passwd "dump="mysqldump -u$user -p$passwd"for database in `$cmd -e "show databases;"|sed '1,2d'|egrep -v "mysql|performance_schema"`dofor tables in `dump -e "show tables from $databses;"|sed '1d'`do$cmd "alter table $database.$tables engine = MyISAm;"donedone面試題041:如何批量更改數(shù)據(jù)庫字符集?
通過mysqldump命令備份出一個sql文件,再使用sed命令替換sed -i 's/GBK/UTF8/g'
面試題042:網(wǎng)站打開慢,請給出排查方法,如是數(shù)據(jù)庫慢導致,如何排查并解決,請分析并舉例?
1、可以使用top free 等命令分析系統(tǒng)性能等方面的問題
2、如是因為數(shù)據(jù)庫的原因造成的,就需要查看慢查詢?nèi)罩救ゲ檎也⒎治鰡栴}所在另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當前名稱:Linux運維必會的MySQL企業(yè)面試題大全推薦-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://weahome.cn/article/ghojs.html