<meta charset="utf-8">
<article class="_2rhmJa">
SQL審核的需求
SQL審核是保證DDL&DML正常使用演怎,不會造成線上事故的重要手段。經(jīng)研究,來自于去哪兒網(wǎng)的Inception有較大的使用基礎(chǔ)荣病,結(jié)合一些上層的人機交互系統(tǒng)可以實現(xiàn)SQL審核栋操、執(zhí)行以及備份和恢復(fù)功能闸餐。
Inception
Inception是一個自動化運維工具,在Mysql前做一個審核和操作的屏障讼庇。跟Inception的交互是程序級別的绎巨,即通過Python或其他程序編程實現(xiàn)對Inception的命令調(diào)用,并解析結(jié)果蠕啄。
Inception的文檔地址:http://mysql-inception.github.io/inception-document/
Yearning
由于Inception是一個基礎(chǔ)工具场勤,如果要做SQL審核,系統(tǒng)級的業(yè)務(wù)操作(提DDL&DML歼跟,審核和媳,執(zhí)行等)還需要一個人機交互的界面,Yearning就是這么一個Python實現(xiàn)的web系統(tǒng)哈街。
Yearning的文檔地址:https://cookiey.github.io/Yearning-document/
文檔計劃
本篇先把安裝問題講清楚留瞳,其實參考作者文檔已經(jīng)很清晰,此處僅把我在安裝過程中的問題記錄下來骚秦,供大家參考她倘。
后續(xù)分Inception和Yearning做業(yè)務(wù)上的專題研究璧微。
Inception安裝
參考資料:http://mysql-inception.github.io/inception-document/install/
- Inception的編譯,使用源碼編譯時硬梁,首先需要對bison包進行降級(yum收錄的是3.0.4前硫,源碼編譯2.5)
bison 2.5的源碼編譯
代碼獲取:http://ftp.gnu.org/gnu/bison/bison-2.5.tar.bz2
解壓縮:tar xf bison-2.5.tar.bz2
進入目錄:cd bison-2.5
檢查并編譯源碼:./configure && make && make install
其中編譯問題用以下方式解決
解決編譯問題:https://www.cnblogs.com/hjj801006/p/3988220.html
- 拷貝啟動文件:
cd /root/inception/debug/sql
cp Inception gen_lex_hash /usr/local/bin/
- 制作配置文件
cat /etc/inception/inc.cnf
[inception]
general_log=1
general_log_file=/var/log/inception.log
port=6669
socket=/var/run/inc.socket
character-set-client-handshake=0
character-set-server=utf8
inception_remote_system_password=123
inception_remote_system_user=root
inception_remote_backup_port=3306
inception_remote_backup_host=127.0.0.1
inception_support_charset=utf8mb4
inception_enable_nullable=0
inception_check_primary_key=1
inception_check_column_comment=1
inception_check_table_comment=1
inception_osc_min_table_size=1
inception_osc_bin_dir=/var/temp
inception_osc_chunk_time=0.1
inception_enable_blob_type=1
inception_check_column_default_value=1
inc.socket不用找荧止,會在啟動時自動生成屹电。
- 啟動Inception的命令如下
Inception --defaults-file=/etc/inception/inc.cnf
啟動后使用mysql的客戶端進行連接(mycli會有錯誤,貌似是python的兼容問題)
mysql -uroot -h127.0.0.1 -P6669
但是只能本機訪問跃巡,遠程訪問不了危号,原因還未知。(更新:在安裝Yearning時發(fā)現(xiàn)了阿里云的安全組問題素邪,可能同樣是這個原因?qū)е峦饬#?/p>
Yearning安裝
參考資料:https://cookiey.github.io/Yearning-document/install/
- 安裝pip3
1.1 安裝python3的依賴包:
sudo yum install openssl-devel
1.2 獲取python3的壓縮包:
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
1.3 安裝python3(需要root權(quán)限)
tar zxvf Python-3.6.4.tgz
cd Python-3.6.4
./configure
make && make install
- 安裝Yearning
2.1 用pip3安裝依賴包(txt文件在src目錄中)
pip3 install -r requirements.txt
2.2 創(chuàng)建數(shù)據(jù)庫實例yearning
2.3 將該數(shù)據(jù)庫實例的連接信息寫入develop.conf。升級請注意:1.0.0發(fā)布后娘香,該文件增加了兩個屬性:ldap_type=1和smtp_port=苍狰,如果是cp原有的配置文件覆蓋新下載的,要加上這兩個配置
2.4 初始化數(shù)據(jù)庫
python3 manage.py makemigrations && python3 manage.py migrate
2.5 添加初始化用戶
echo "from core.models import Account;Account.objects.create_user(username='admin', password='Yearning_admin', group='admin',is_staff=1)" | python3 manage.py shell
#升級請注意烘绽,從1.0.0開始淋昭,要補充下面這句權(quán)限的配置
echo "from core.models import grained;grained.objects.get_or_create(username='admin', permissions={'ddl': '1', 'ddlcon': [], 'dml': '1', 'dmlcon': [], 'dic': '1', 'diccon': [], 'dicedit': '0', 'query': '1', 'querycon': [], 'user': '1', 'base': '1', 'dicexport': '0'})" | python3 manage.py shell 初始化權(quán)限
2.6 復(fù)制網(wǎng)頁的靜態(tài)文件
cp -rf Yearning/webpage/dist/* $NGINX_HOME/html/
2.7 修改并啟動nginx
2.8 啟動django(注意在src目錄)
python3 manage.py runserver 0.0.0.0:8000
2.9 修改阿里云的安全組策略(解決不能用公網(wǎng)IP訪問的問題,請一定注意增加80和8000兩個端口安接,否則還是登錄不了)翔忽,參考以下文章
http://blog.csdn.net/LJFPHP/article/details/78670459
至此用公網(wǎng)ip訪問可出現(xiàn)如下界面,說明安裝成功
初始用戶見#2.5盏檐,登錄后如下圖所示(如果登錄不了歇式,注意看#2.9是否增加了8000的安全組策略)
1.0.0升級后,之前的用戶要重新配置權(quán)限胡野,但有些權(quán)限可能存在一些bug材失,例如數(shù)據(jù)字典修改時的403問題
至此安裝全部完成!
現(xiàn)在的問題:
- 界面運行比較慢硫豆,估計是Python的原因龙巨,暫時不予解決;
- 正常的sql熊响,檢測不通過旨别,懷疑是Inception的配置問題。經(jīng)查汗茄,是測試數(shù)據(jù)庫的問題秸弛。一個簡單的現(xiàn)象就是用mysql客戶端(mycli同樣)不能加密碼輸入(-p參數(shù)不存在),其他數(shù)據(jù)庫沒有這個問題,即如果客戶端能直連递览,Inception的各項功能也就沒有問題叼屠。懷疑可能是root用戶的原因,或者是阿里云的原因非迹。由于不影響評估环鲤,也暫時不理會了。