程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Linux下MySQL 5.5.8 源碼編譯裝置記載分享

Linux下MySQL 5.5.8 源碼編譯裝置記載分享

編輯:MySQL綜合教程

Linux下MySQL 5.5.8 源碼編譯裝置記載分享。本站提示廣大學習愛好者:(Linux下MySQL 5.5.8 源碼編譯裝置記載分享)文章只能為提供參考,不一定能成為您想要的結果。以下是Linux下MySQL 5.5.8 源碼編譯裝置記載分享正文


體系:Ubuntu 10.10
mysql源碼文件:mysql-5.5.8.tar.gz
裝置所需對象:cmake, GNU make, gcc, Perl, libncurses5-dev, bison(可選), chkconfig
注:
1.官方2010-11-18的源碼有幾處bug,在編譯之前參照官方的解釋,停止了手動修正。

官方解釋鏈接:http://lists.mysql.com/commits/126782
2.官方5.5版本參考手冊:http://dev.mysql.com/doc/
汗了一下,3392頁的參考手冊!
=>對象裝置:
1. cmake
----沒有本身編譯裝置cmake
----shell:~$ sudo apt-get install cmake
----版本:2.8.2
2. GNU make
----Ubuntu自帶
----版本:3.81
3.GCC
----Ubuntu自帶
----版本:4.4.5(官方文檔:必需3.2以上)
4.Perl
----Ubuntu自帶
----版本:5.10.1
5.libncurses5-dev (ncurses-devel)
----若差了這個包,在cmake的時刻會報錯。
----Debian/Ubuntu上的包名是libncurses5-dev,RedHat和其他版本對應的是ncurses-devel
----shell:~$ sudo apt-get install libncurses5-dev
----報錯信息
------------------www.linuxidc.com---------------
-- MySQL 5.5.8
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:82 (MESSAGE):
Curses library not found. Please install appropriate package,

remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu , package name is libncurses5-dev ,
on RedHat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:126 (FIND_CURSES)
cmake/readline.cmake:216 (MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:256 (MYSQL_CHECK_READLINE)

-- Configuring incomplete, errors occurred!
---------------------------------
6. bison
----shell:~$ sudo apt-get install bison
----可選。沒有這個對象,在make的時刻報出正告。
----正告記載:
---------------------------------

Warning: Bison executables not found in PATH
---------------------------------
7.chkconfig
----前面設置裝備擺設mysql辦事自啟動的時刻須要。
----shell:~$ sudo apt-get install chkconfig
=>mysql裝置:
1.解壓源代碼文件
----shell定位到源代碼文件地點目次
----解壓
shell:~$ tar zxvf mysql-5.5.8.tar.gz
2.cmake操作
----shell定位到解壓出的源代碼文件夾目次(文件夾:mysql-5.5.8)
----cmake履行:
---------------------------------
shell:~$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/home/system_username/Programming/mysql/mysqldata
-DSYSCONFDIR=/etc
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock
-DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8-general_ci
-DMYSQL_USER=mysql
注:沒有換行。官方文檔上,cmake 敕令前面加個點不懂甚麼意思。在這裡加上敕令履行不了
---------------------------------
源代碼設置裝備擺設選項解釋:
//mysql裝置的主目次,5.5.8版本默許為/usr/local/mysql,所以可以不添加
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

//mysql數據保留的途徑,自界說
-DMYSQL_DATADIR=/home/system_username/mysql/mysqldata

//mysql設置裝備擺設文件地址------The default my.cnf option file directory
-DSYSCONFDIR=/etc

//Compile storage engine xxx statically into server
/*Storage engines are built as plugins. You can build a plugin as a static module (compiled into the server)
*or a dynamic module (built as a dynamic library that must be installed into the server using the INSTALL
*PLUGIN statement or the --plugin-load option before it can be used). Some plugins might not support static
*or dynamic building.
*/
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1

//Unix socket file
/*
*The Unix socket file path on which the server listens for socket connections. This must be an absolute path
*name. The default is /tmp/mysql.sock
*/
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock

//數據庫辦事器TCP/IP銜接的監聽端口,默許為3306
-DMYSQL_TCP_PORT=3306

//Whether to enable LOCAL capability in the client library for LOAD DATA INFILE
//默許為封閉,這裡開啟
-DENABLED_LOCAL_INFILE=1

//數據庫編碼設置
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8-general_ci
3.編譯和裝置
----shell定位到源代碼文件夾目次
----履行:(編譯用了年夜概20分鐘)
shell:~$ make
shell:~$ make install

4.後續設置裝備擺設
----進入mysql裝置目次下的劇本目次
shell:~$ cd /usr/local/mysql/scripts
----應用mysql_install_db劇本生成新的MySQL 受權表
./mysql_install_db --basedir=/usr/local/mysql --datadir=/home/system_username/Programming/mysql/mysqldata
--user=mysql
----進入mysql裝置目次下的支撐文件目次
shell:~$ cd /usr/local/mysql/support-files
----復制mysql設置裝備擺設文件
shell:~$ sudo cp my-medium.cnf /etc/my.cnf

----復禮服務文件並修正
shell:~$ sudo cp mysql.server mysqld
----修正mysqld
basedir=/usr/local/mysql
datadir=/home/mysql
mv mysqld /etc/init.d/mysqld
----啟動辦事
shell:~$ service mysqld start
----封閉辦事
shell:~$ service mysqld stop
---------------------------------
service敕令:
1. 用於治理Linux體系中辦事的敕令
2. 感化是去/etc/init.d目次下尋覓響應的辦事,停止開啟和封閉等操作
3. 上述操作後,mysqld辦事文件對應mysql.server文件
---------------------------------
----添加辦事到自啟動項
shell:~$ sudo chkconfig --level 3 mysqld on

----設置軟銜接使mysql, mysqldump, mysqladmin這三個敕令能在shell中直接運轉
shell:~$ sudo ln -s /usr/local/mysql/bin/mysql /usr/bin
shell:~$ sudo ln -s /usr/local/mysql/bin/mysqldump /usr/bin
shell:~$ sudo ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
---------------------------------
=>mysql數據庫中文亂碼處理 :
1. 亂碼剖析
----從終端shell進入mysql
shell:~$ mysql
............
............
mysql> show variables like '%character%'
----獲得以下數據庫編碼信息表:
+----------------------------------- +-------------------------------------------+
| Variable_name | Value |
+------------------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+------------------------------------ +-------------------------------------------+
可以看出character_set_database ,character_set_server 的編碼照樣默許的latin1。
不曉得為何,之前DEFAULT_CHARSET設置成為utf8的,似乎沒起感化。檢查官方文檔
發明,character_set_database不支撐設置裝備擺設文件(/etc/my.cnf)變量設置,
然則character_set_server 支撐設置裝備擺設文件變量設置。

2. 處理方法
----翻開設置裝備擺設文件
shell:~$ sudo gedit /etc/my.cnf
然後在[mysqld]設置裝備擺設選項下添加
character-set-server = utf8
----然落後入mysql
履行:
mysql> show variables like '%character%'
成果:character_set_database ,character_set_server兩項都變成utf8了
----測試:
往數據庫表中拔出中文字段,中文就正常顯示了。

注:1.用5.1版本的時刻以下辦法是可以處理中文編碼成績的
----在設置裝備擺設文件[mysqld]和[client]節下分離添加: default-character-set = utf8
2.不知到是否是手動編譯的緣由,在5.5.8中設置裝備擺設文件頂用上述辦法會形成數據庫辦事沒法啟動。
----毛病日記以下:( datadir/username.err為毛病日記文件)
----------------------------------------------------
mysqld_safe mysqld from pid file /home/cyberwym/Programming/mysql/mysqldata/cyberwym.pid ended
...........
...........
[ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'default-character-set=utf8'
[ERROR] Aborting
----------------------------------------------------
----如許會形成pid文件(datadir/username.pid)沒法更新
----在設置裝備擺設文件[mysqld]和[client]節下分離去失落: default-character-set = utf8 後,數據庫辦事就啟動正常了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved