Linux營運必會的MySQL企業面試題大全(附答案),mysql附答案

來源:互聯網
上載者:User

Linux營運必會的MySQL企業面試題大全(附答案),mysql附答案
(1)基礎筆試命令考察1.開啟MySQL服務

/etc/init.d/mysqld startservice mysqld startsystemctl  start mysqld
2.檢測連接埠是否運行
lsof -i :3306netstat -lntup |grep 3306
3.為MySQL設定密碼或者修改密碼

設定密碼

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' 
4.登陸MySQL資料庫
mysql -uroot -ppassword
5.查看當前資料庫的字元集
show create database DB_NAME;
6.查看當前資料庫版本
mysql -Vmysql -uroot -ppassowrd -e "use mysql;select version();"
7.查看當前登入的使用者
select user();
8.建立GBK字元集的資料庫mingongge,並查看已建庫完整語句
create database mingongge DEFAULT CHARSET GBK COLLATE gbk_chinese_ci;
9.建立使用者mingongge,使之可以管理資料庫mingongge
grant all on mingongge.* to 'mingongge'@'localhost' identified by 'mingongge';
10.查看建立的使用者mingongge擁有哪些許可權
show grants for mingongge@localhost
11.查看當前資料庫裡有哪些使用者
select user from mysql.user;
12.進入mingongge資料庫
use mingongge
13.建立一innodb GBK表test,欄位id int(4)和name varchar(16)
create table test (     id int(4),     name varchar(16)     )ENGINE=innodb DEFAULT CHARSET=gbk;
14.查看建表結構及表結構的SQL語句
desc test;show create table test\G
15.插入一條資料“1,mingongge”
insert into test values('1','mingongge');
16.再批量插入2行資料 “2,民工哥”,“3,mingonggeedu”
insert into test values('2','民工哥'),('3','mingonggeedu');
17.查詢名字為mingongge的記錄
select * from test where name = 'mingongge';
18.把資料id等於1的名字mingongge更改為mgg
update test set name = 'mgg' where id = '1';
19.在欄位name前插入age欄位,類型tinyint(2)
alter table test add age tinyint(2) after id;
20.不退出資料庫,完成備份mingongge資料庫
system mysqldump -uroot -pMgg123.0. -B mingongge >/root/mingongge_bak.sql
21.刪除test表中的所有資料,並查看
delete from test;select * from test;
22.刪除表test和mingongge資料庫並查看
drop table test;show tables;drop database mingongge;show databases;
23.不退出資料庫恢複以上刪除的資料
system mysql -uroot -pMgg123.0. 
24.把庫表的GBK字元集修改為UTF8
alter database mingongge default character set utf8;alter table test default character set utf8;
25.把id列設定為主鍵,在Name欄位上建立普通索引
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條記錄(自行設定資料)
insert into test values('4','23','li','13700000001'),('5','26','zhao','13710000001');
28.在手機欄位上對前8個字元建立普通索引
create index SJ on test(shouji(8));
29.查看建立的索引及索引類型等資訊
show index from test;show create table test\G#下面的命令也可以查看索引類型  show keys from test\G   
30.刪除Name,shouji列的索引
drop index SJ on test;drop index mggindex on test;
31.對Name列的前6個字元以及手機列的前8個字元組建聯合索引
create index lianhe on test(name(6),shouji(8));
32.查詢手機號以137開頭的,名字為zhao的記錄(提前插入)
select * from test where shouji like '137%' and name = 'zhao';
33.查詢上述語句的執行計畫(是否使用聯合索引等)
explain select * from test where name = 'zhao' and shouji like '137%'\G
34.把test表的引擎改成MyISAM
alter table test engine=MyISAM;
35.收回mingongge使用者的select許可權
revoke select on mingongge.* from mingongge@localhost;
36.刪除mingongge使用者
drop user migongge@localhost;
37.刪除mingongge資料庫
drop database mingongge
38.使用mysqladmin關閉資料庫
mysqladmin -uroot -pMgg123.0. shutdownlsof -i :3306
39.MySQL密碼丟了,請找回?
mysqld_safe --skip-grant-tables &   #啟動資料庫服務mysql -uroot -ppassowrd -e "use mysql;update user set passowrd = PASSWORD('newpassword') where user = 'root';flush privileges;"
(2)MySQL營運基礎知識面試問答題面試題001:請解釋關係型資料庫概念及主要特點?

關係型資料庫模型是把複雜的資料結構歸結為簡單的二元關係,對資料的操作都是建立一個或多個關係表格上,最大的特點就是二維的表格,通過SQL結構查詢語句存取資料,保持資料一致性方面很強大

面試題002:請說出關係型資料庫的典型產品、特點及應用情境?

1、mysql 互連網企業常用

2、oracle 大型傳統公司專屬應用程式軟體

3、 如資料備份、複雜串連查詢、一致性資料存放區等,還是使用MySQL或者其他傳統的關係型資料庫最合適

面試題003:請解釋非關係型資料庫概念及主要特點?

非關係型資料庫也被稱為NoSQL資料庫,資料存放區不需有特有固定的表結構

特點:高效能、高並發、簡單易安裝

面試題004:請說出非關係型資料庫的典型產品、特點及應用情境?

1、memcaced 純記憶體

2、redis 持久化緩衝

3、mongodb 面向文檔

如果需要短時間響應的查詢操作,沒有良好模式定義的資料存放區,或者模式更改頻繁的資料存放區還是用NoSQL

面試題005:請詳細描述SQL語句分類及對應代表性關鍵字。

sql語句分類如下

DDL 資料定義語言 (Data Definition Language),用來定義資料庫物件:庫、表、列

代表性關鍵字:create alter drop

DML 資料操作語言,用來定義資料庫記錄

代表性關鍵字:insert delete update

DCL 資料控制語言,用來定義存取權限和安全層級

代表性關鍵字:grant deny revoke

DQL 資料查詢語言,用來查詢記錄資料

代表性關鍵字:select

面試題006:請詳細描述char(4)和varchar(4)的差別

char長度是固定不可變的,varchar長度是可變的(在設定內)比如同樣寫入cn字元,char類型對應的長度是4(cn+兩個空格),但varchar類型對應長度是2

面試題007:如何建立一個utf8字元集的資料庫mingongge?
create database mingongge default character utf8 collate utf8_general_ci;
面試題008:如何授權mingongge使用者從172.16.1.0/24訪問資料庫。
grant all on *.* to mingongge@'172.16.1.0/24' identified by '123456';
面試題009:什麼是MySQL多執行個體,如何配置MySQL多執行個體?

mysql多執行個體就是在同一台伺服器上啟用多個mysql服務,它們監聽不同的連接埠,運行多個服務進程,它們相互獨立,互不影響的對外提供服務,便於節約伺服器資源與後期架構擴充

多執行個體的配置方法有兩種:

1、一個執行個體一個設定檔,不同連接埠

2、同一設定檔(my.cnf)下配置不同執行個體,基於mysqld_multi工具

面試題010:如何加強MySQL安全,請給出可行的具體措施?

1、刪除資料庫不使用的預設使用者

2、配置相應的許可權(包括遠端連線)

3、不可在命令列介面下輸入資料庫的密碼

4、定期修改密碼與加強密碼的複雜度

面試題011:MySQL root密碼忘了如何找回?

參考前面的回答

面試題012:delete和truncate刪除資料的區別?

前者刪除資料可以恢複,它是逐條刪除速度慢

後者是物理刪除,不可恢複,它是整體刪除速度快

面試題013:MySQL Sleep線程過多如何解決?

1、可以殺掉sleep進程,kill PID

2、修改配置,重啟服務

[mysqld]wait_timeout = 600interactive_timeout=30#如果生產伺服器不可隨便重啟可以使用下面的方法解決set global wait_timeout=600set global interactive_timeout=30;
面試題014:sort_buffer_size參數作用?如何線上修改生效?
 在每個connection(session)第一次串連時需要使用到,來提訪問效能  set global sort_buffer_size = 2M 
面試題015:如何線上正確清理MySQL binlog?

MySQL中的binlog日誌記錄了資料中的資料變動,便於對資料的基於時間點和基於位置的恢複
但記錄檔的大小會越來越大,點用大量的磁碟空間,因此需要定時清理一部分日誌資訊
手工刪除:

首先查看主從庫正在使用的binlog檔案名稱

show master(slave) status\G

刪除之前一定要備份

purge master logs before’2017-09-01 00:00:00’;

#刪除指定時間前的日誌

purge master logs to’mysql-bin.000001’;

刪除指定的記錄檔

自動刪除:

通過設定binlog的到期時間讓系統自動刪除日誌

show variables like ‘expire_logs_days’;

et global expire_logs_days = 30;

#查看到期時間與設定到期時間

面試題016:Binlog工作模式有哪些?各什麼特點,企業如何選擇?

1.Row(行模式);

日誌中會記錄成每一行資料被修改的形式,然後在slave端再對相同的資料進行修改

2.Statement(語句模式)

每一條修改的資料都會完整的記錄到主庫master的binlog裡面,在slave上完整執行在master執行的sql語句

3.mixed(混合模式)

結合前面的兩種模式,如果在工作中有使用函數 或者觸發器等特殊功能需求的時候,使用混合模式

資料量達到比較高時候,它就會選擇 statement模式,而不會選擇Row Level行模式

面試題017:誤操作執行了一個drop庫SQL語句,如何完整恢複?

1、停止主從複製,在主庫上執行鎖表並重新整理binlog操作,接著恢複之前的全備檔案(比如0點的全備)

2、將0點時的binlog檔案與全備到故障期間的binlog檔案合并匯出成sql語句

mysqlbinlog –no-defaults mysql-bin.000011 mysql-bin.000012 >bin.sql

3、將匯出的sql語句中drop語句刪除,恢複到資料庫中

mysql -uroot -pmysql123 < bin.sql

面試題018:mysqldump備份使用了-A -B參數,如何?恢複單表?

-A 此參數作用是備份所有資料庫(相當於–all-databases)

-B databasename 備份指定資料(單庫備份使用)

面試題019:詳述MySQL主從複製原理及配置主從的完整步驟

主從複製的原理如下:

主庫開啟binlog功能並授權從庫串連主庫,從庫通過change master得到主庫的相關同步資訊,然後串連主庫進行驗證,主庫IO線程根據從庫slave線程的請求,從master.info開始記錄的位置點向下開始取資訊,同時把取到的位置點和最新的位置與binlog資訊一同發給從庫IO線程,從庫將相關的sql語句存放在relay-log裡面,最終從庫的sql線程將relay-log裡的sql語句應用到從庫上,至此整個同步過程完成,之後將是無限重複上述過程

完整步驟如下:

1、主庫開啟binlog功能,並進行全備,將全備檔案推送到從程式庫伺服器上

2、show master status\G 記錄下當前的位置資訊及二進位檔案名

3、登陸從庫恢複全備檔案

4、執行change master to 語句

5、執行start slave and show slave status\G

面試題020:如何開啟從庫的binlog功能?

修改設定檔加上下面的配置

log_bin=slave-binlog_bin_index=slave-bin.index

需要重啟服務生效

面試題021:MySQL如何?雙向互為主從複製,並說明應用情境?

雙向同步主要應用於解決單一主庫寫的壓力,具體配置如下

主庫配置

[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 

主從程式庫伺服器都需要重啟mysql服務

面試題022:MySQL如何?級聯同步,並說明應用情境?

級聯同步主要應用在從庫需要做為其它資料庫的主庫

在需要做級聯同步的資料庫設定檔增加下面的配置即可

log_bin=slave-binlog_bin_index=slave-bin.index
面試題023:MySQL主從複製故障如何解決?

登陸從庫

1、執行stop slave;停止主從同步

2、然後set global sql_slave_skip_counter = 1;跳過一步錯誤

3、最後執行 start slave;並查看主從同步狀態

需要重新進行主從同步操作步驟如下

進入主庫

1、進行全備資料庫並重新整理binlog,查看主庫此的狀態

2、恢複全備檔案到從庫,然後執行change master

3、開啟主從同步start slave;並查看主從同步狀態

面試題024:如何監控主從複製是否故障?
mysql -uroot -ppassowrd -e "show slave status\G" |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes通過判斷Yes的個數來監控主從複製狀態,正常情況等於2
面試題025:MySQL資料庫如何?讀寫分離?

1、通過開發程式實現

2、通過其它工具實現(如mysql-mmm)

面試題026:生產一主多從從庫宕機,如何手工恢複?

1、執行stop slave 或者停止服務

2、修複好從庫資料庫

3、然後重新操作主庫同步

面試題027:生產一主多從主庫宕機,如何手工恢複?

1、登陸各個從庫停止同步,並查看誰的資料最新,將它設定為新主庫讓其它從庫同步其資料

2、修複好主庫之後,生新操作主從同步的步驟就可以了

#需要注意的新的主庫如果之前是唯讀,需要關閉此功能讓其可寫#需要在新從庫建立與之前主庫相同的同步的使用者與許可權#其它從庫執行change master to master_port=新主庫的連接埠,start slave
面試題028:工作中遇到過哪些資料庫故障,請描述2個例子?

1、開發使用root使用者在從庫上寫入資料造成主從資料不一致,並且前端沒有展示需要修改的內容(仍舊是老資料)

2、內網測試環境伺服器突然斷電造成主從同步故障

面試題029:MySQL出現複寫延遲有哪些原因?如何解決?

1、需要同步的從庫資料太多

2、從庫的硬體資源較差,需要提升

3、網路問題,需要提升網路頻寬

4、主庫的資料寫入量較大,需要優配置和硬體資源

5、sql語句執行過長導致,需要最佳化

面試題030:給出企業生產大型MySQL叢集架構可行備份方案?

1、雙主多從,主從同步的架構,然後實行某個從庫專業做為備份伺服器

2、編寫指令碼實行分庫分表進行備份,並加入定時任務

3、最終將備份服務推送至內網專業伺服器,資料庫伺服器本地保留一周

4、備份伺服器根據實際情況來保留備份資料(一般30天)

面試題031:什麼是資料庫事務,事務有哪些特性?企業如何選擇?

資料庫事務是指邏輯上的一組sql語句,組成這組操作的各個語句,執行時要麼成功,要麼失敗

特點:具有原子性、隔離性、持久性、一致性

面試題032:請解釋全備、增備、冷備、熱備概念及企業實踐經驗?

全備:資料庫所有資料的一次完整備份,也就是備份當前資料庫的所有資料

增備:就在上次備份的基礎上備份到現在所有新增的資料

冷備:停止服務的基礎上進行備份操作

熱備:實行線上進行備份操作,不影響資料庫的正常運行

全備在企業中基本上是每周或天一次,其它時間是進行增量備份

熱備使用的情況是有兩台資料庫在同時提供服務的情況,針對歸檔模式的資料庫

冷備使用方式有企業初期,資料量不大且伺服器數量不多,可能會執行某些庫、表結構等重大操作時

面試題033:MySQL的SQL語句如何最佳化?

建立主鍵與增加索引

面試題034:企業生產MySQL叢集架構如何設計備份方案?

1、叢集架構可採用雙主多從的模式,但實際雙主只有一主線上提供服務,兩台主之間做互備

2、另外的從可做讀的負載平衡,然後將其中一台抽出專業做備份

面試題035:開發有一堆資料發給dba執行,DBA執行需注意什嗎?

1、需要注意語句是否有格式上的錯誤,執行會出錯導致過程中斷

2、還需要注意語句的執行時間是否過長,是否會對伺服器負載產生壓力影響實際生產

面試題036:如何調整生產線中MySQL資料庫的字元集。

1、首先匯出庫的表結構 -d 只匯出表結構,然後批量替換

2、匯出庫中的所有資料(在不產生新資料的前提下)

3、然後全域替換set names = xxxxx

4、刪除原有庫與表,並新建立出來,再匯入建庫與建表語句與所有資料

面試題037:請描述MySQL裡中文資料亂碼原理,如何防止亂碼?

伺服器系統、資料庫、用戶端三方字元集不一致導致,需要統一字元

面試題038:企業生產MySQL如何最佳化(請多角度描述)?

1、提升伺服器硬體資源與網路頻寬

2、最佳化mysql服務組態檔

3、開啟慢查詢日誌然後分析問題所在

面試題039:MySQL高可用方案有哪些,各自特點,企業如何選擇?

高可用方案有

1、主從架構

2、MySQL+MMM

3、MySQL+MHA

4、mysql+haproxy+drbd

5、mysql+proxy+amoeba

面試題040:如何批量更改資料庫表的引擎?

通過mysqldump命令備份出一個sql檔案,再使用sed命令替換

或者執行下面的指令碼進行修改

#!/bin/shuser=rootpasswd=123456cmd="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:如何批量更改資料庫字元集?

通過mysqldump命令備份出一個sql檔案,再使用sed命令替換sed -i ‘s/GBK/UTF8/g’

面試題042:網站開啟慢,請給出排查方法,如是資料庫慢導致,如何排查並解決,請分析並舉例?

1、可以使用top free 等命令分析系統效能等方面的問題

2、如是因為資料庫的原因造成的,就需要查看慢查詢日誌去尋找並分析問題所在

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.