本文目錄一覽:
- 1、mysql5.6.33源碼編譯
- 2、如何才能讓自己看懂MySQL源碼,並且能夠自己寫出相應的patch
- 3、怎麼用visual studio打開mysql源碼
- 4、mysql 源代碼 怎麼看
- 5、mysql5源碼中初始化部分在哪
mysql5.6.33源碼編譯
重點不是這裡,重點是下面的錯誤:
[ERROR] Plugin ‘InnoDB’ init function returned error.
[ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported table type: InnoDB
[ERROR] Aborting
把你的 datadir 數據目錄清空。重新運行mysql_install_db
如何才能讓自己看懂MySQL源碼,並且能夠自己寫出相應的patch
1. 網路模型,MySQL 的網路模型太老了, one connection per thread,代碼很簡單。
2. 協議解析,MySQL 的 協議還算比較簡單的,但是設計的 prepare 的協議就要花點時間,我寫個一些分析的文章和圖,網上你搜索下。這裡你要花時間把 mysql client 這個客戶端的代碼都看看,這樣對你往後無論開發 jdbc還是 libmysqlclient 的項目都有幫助。
3. SQL 解析,咳咳,不好意思大難題了。不過還好對於編譯原理的知識你只需要了解前端的詞法解析和 yacc 的使用即可,你可以參考 flex and bison 這本書 ,僅僅需要看懂 yy 和 lex 文件即可,yy 比較長,但裡面涵蓋了所有的 MySQL 所支持的 sql 的語法。我也寫過一個簡單的 sql parser,在我的 github 上。
4.replication,這個不複雜就幾個文件。
怎麼用visual studio打開mysql源碼
1.下載 mysql++-3.1.0.tar.gz,解壓,如:c:\mysql++-3.1.0
2、mysql++-3.1.0 目錄下進入相應 Visual Studio 版本(VS2003,VS2005,VS2008。VS2010可以使用VS2008),打開解決方案,這裡以VS2008為例。
3、把mysql++設為啟動項目,生成時可能會報錯:錯誤為「無法打開libmysql.lib」
4、在mysql安裝目錄下找到libmysql.lib,複製到 C:\Program Files\Microsoft Visual Studio 9.0\VC\lib (這裡以VS2008為例),再次生成成功。
5、設置 resetdb 為啟動項,如果生成成功,則說明OK。
6、把 c:\mysql++-3.1.0\vc2008\Debug 目錄下的 mysqlpp_d.dll、mysqlpp_d.lib、libmysql.dll、libmysql.lib 四個文件和 c:\mysql++-3.1.0\lib目錄 拷貝到放置到新項目的根目錄下。
7、右鍵新項目的屬性——配置屬性——鏈接器——輸入——附加依賴項——添加 mysqlpp_d.lib libmysql.lib
8、測試代碼:
#include iostream
#include string
#include cstdlib
#include “mysql++.h”
using namespace std;
int main()
{
mysqlpp::Connection con(false);
con.set_option(new mysqlpp::SetCharsetNameOption(“gbk”));
cout “請輸入資料庫(root用戶)連接密碼:”;
string pwd;
getline(cin, pwd);
if (!con.connect(“tot”, “localhost”, “root”, pwd.c_str()))
{
cout “無法連接,請檢查密碼是否正確!” endl;
return -1;
}
mysql 源代碼 怎麼看
給你個過來人的建議。兩個方式入手。
1、利用他。儘可能從大模塊開始,用你的代碼,去調用他。這是從功能特性角度,去理解各個模塊的作用。這非常容易加深你對應用它的理解。
2、在代碼中插入LOG,檢測代碼運行流程。
如果你只是靜態的看代碼,這個不現實的。
如果你想看一部分代碼。首先你要想辦法讓這套代碼RUN起來,如果你使用任何方式都無法讓這段代碼運行,我只能說,這段代碼沒有存在價值。為什麼在裡面,當然更大的可能是,你沒找到開啟它的方法。
動態分析法,是門學問。包括對運行態才出現BUG的系統進行DEBUG,當然不是GDB或者VC的F5模式。不過貌似學校沒有這類教學。很工程的東西。我也只是經驗所得。沒有系統的理論化。
例如一套系統,你在不改代碼的情況下,要能找到問題。甚至不能加LOG代碼,只能通過反饋判斷。不是不可能的。甚至有時必須這麼做。
mysql5源碼中初始化部分在哪
mysql的源碼安裝
1.解壓壓縮包
[root@server1 mnt]# tar zxfmysql-boost-5.7.11.tar.gz #解壓gz包
[root@server1 mnt]# yum installcmake-2.8.12.2-4.el6.x86_64.rpm -y #安裝cmake
[root@server1 mnt]# cd mysql-5.7.11/
2.軟體配置
[root@server1 mysql-5.7.11]# cmake-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安裝路徑
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \ #資料庫存放路徑
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock\ #Unix socket 文件路徑
-DWITH_MYISAM_STORAGE_ENGINE=1\ #安裝myisam 存儲引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1\ #安裝innodb 存儲引擎
-DDEFAULT_CHARSET=utf8 \ #使用utf8 字元
-DDEFAULT_COLLATION=utf8_general_ci \ #校驗字元
-DEXTRA_CHARSETS=all \ #安裝所有擴展字符集
-DWITH_BOOST=boost/boost_1_59_0/ #boost的指定路徑
如果出現如下錯誤
[root@server1 mysql-5.7.11]# rm -frCMakeCache.txt #清空緩存文件
[root@server1 mysql-5.7.11]# yuminstall ncurses-devel gcc-c++ -y #安裝上圖需要的軟體包
#####注意:重新載入配置之前,一定要清空緩存文件
重新配置
[root@server1 mysql-5.7.11]# cmake-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all-DWITH_BOOST=boost/boost_1_59_0/
[root@server1 mysql-5.7.11]# yuminstall bison -y #系統可以跳過warning錯誤,此步驟可有可無
3.編譯、鏈接、安裝
[root@server1mysql-5.7.11]# make #編譯,鏈接,生成可執行文件
[root@server1mysql-5.7.11]# make install #安裝
2.mysql的簡單配置
1.添加mysql的用戶和用戶組
[root@server1mysql-5.7.11]# cd /usr/local/lnmp/mysql/
為了安全起見,可以創建專門的mysql用戶和用戶組,用來啟動和關閉資料庫,避免了用root用戶啟動資料庫
[root@server1mysql]# useradd -u 27 -M -d/usr/local/lnmp/mysql/data -s /sbin/nologin mysql #創建mysql用戶
[root@server1mysql]# id mysql
uid=27(mysql)gid=901(mysql) groups=901(mysql)
[root@server1mysql]# groupmod -g 27 mysql
[root@server1mysql]# id mysql
uid=27(mysql)gid=27(mysql) groups=27(mysql)
[root@server1mysql]# chown mysql.mysql . -R #修改mysql目錄下文件的許可權
2.添加配置文件、啟動腳本、環境變數
[root@server1mysql]# cp /etc/my.cnf /mnt/ #備份my.cnf
[root@server1mysql]# cd support-files/
[root@server1support-files]# cp my-default.cnf /etc/my.cnf #伺服器配置文件
cp:overwrite `/etc/my.cnf’? y
[root@server1support-files]# cp mysql.server /etc/init.d/mysqld #添加mysql啟動命令
[root@server1support-files]# cd ..
[root@server1mysql]# cd bin/
[root@server1bin]# pwd
/usr/local/lnmp/mysql/bin
[root@server1bin]# vim /root/.bash_profile #將mysql添加到系統的環境變數里
10 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@server1bin]# source /root/.bash_profile #刷新環境變數文件
[root@server1bin]# echo $PATH #查看mysql添加到環境變數
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/lnmp/mysql/bin
[root@server1bin]# which mysql #測試
/usr/local/lnmp/mysql/bin/mysql
3.Mysql的初始化及一些設置
[root@server1~]# mysqld –initialize–user=mysql #初始化mysql
原創文章,作者:OGFIV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/313268.html