Mysql 源碼安裝

文章轉載自:http://www.cnblogs.com/Richardzhu/p/3220883.html

一、文章說明

  最近接觸到mysql數據庫,因此閒來研究一下,今天演示一下用源碼安裝mysql,如果使用rpm包安裝的話個人感覺挺簡單的。

  環境說明:

    操作系統:rhel 5.4 x86

    Mysql版本:mysql-5.5.22

二、安裝cmake(mysql5.5以後是通過cmake來編譯的)

  在mysql5.5之前的話直接編輯就可以,而在5.5以後需要通過cmake來編譯,在附錄中介紹一下直接編譯。

  下載cmake-2.8.4.tar.gz,本人是在度娘搜的。

[root@node4 ~]# tar -zxvf cmake-2.8.4.tar.gz
[root@node4 ~]# cd cmake-2.8.4
[root@node4 cmake-2.8.4]# ./configure --prefix=/usr/local/cmake
----在這裏可以使用# gmake && make install
[root@node4 cmake-2.8.4]# make [root@node4 cmake-2.8.4]# make install

  備註:configure需要執行編譯到目錄。
三、創建mysql的安裝目錄及數據庫存放目錄

[root@node4 ~]# mkdir -p /opt/mysql5.5
[root@node4 ~]# mkdir -p /opt/mysql5.5/data 

四、創建mysql用戶及用戶組

[root@node4 ~]# groupadd mysql
[root@node4 ~]# useradd -r -g mysql mysql

五、安裝mysql

複製代碼
[root@node4 ~]# tar -zxvf mysql-5.5.22.tar.gz
[root@node4 ~]# cd mysql-5.5.22
----編譯出現以下錯誤,需要ncurses-devel
[root@node4 mysql-5.5.22]#/usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql5.5 -DMYSQL_DATADIR=/opt/mysql5.5/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci  -DEXTRA_CHARSETS=all  -DENABLED_LOCAL_INFILE=1
-- MySQL 5.5.22
-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH) 
CMake Error at cmake/readline.cmake:83 (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:127 (FIND_CURSES)
  cmake/readline.cmake:217 (MYSQL_USE_BUNDLED_LIBEDIT)
  CMakeLists.txt:268 (MYSQL_CHECK_READLINE)

-- Configuring incomplete, errors occurred! ----查看ncurses是否安裝: [root@node4 mysql-5.5.22]# rpm -qa|grep necurses ncurses-5.5-24.20060715 ----安裝ncurses-devel [root@node4]# rpm -ivh ncurses-devel-5.5-24.20060715.i386.rpm warning: ncurses-devel-5.5-24.20060715.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:ncurses-devel ########################################### [100%] ----刪除CMakeCache.txt [root@node4 mysql-5.5.22]# find / -name CMakeCache.txt /root/mysql-5.5.22/CMakeCache.txt /root/cmake-2.8.4/CMakeCache.txt /root/cmake-2.8.4/Tests/ComplexOneConfig/Cache/CMakeCache.txt /root/cmake-2.8.4/Tests/Complex/Cache/CMakeCache.txt /root/cmake-2.8.4/Tests/CMakeFiles/CheckFortran/CMakeCache.txt /root/cmake-2.8.4/Tests/ComplexRelativePaths/Cache/CMakeCache.txt [root@node4 mysql-5.5.22]# rm /root/mysql-5.5.22/CMakeCache.txt rm: remove regular file `/root/mysql-5.5.22/CMakeCache.txt'? yes [root@node4 mysql-5.5.22]# rm /root/cmake-2.8.4/CMakeCache.txt rm: remove regular file `/root/cmake-2.8.4/CMakeCache.txt'? yes [root@node4 mysql-5.5.22]# rm /root/cmake-2.8.4/Tests/ComplexOneConfig/Cache/CMakeCache.txt rm: remove regular file `/root/cmake-2.8.4/Tests/ComplexOneConfig/Cache/CMakeCache.txt'? yes [root@node4 mysql-5.5.22]# rm /root/cmake-2.8.4/Tests/Complex/Cache/CMakeCache.txt rm: remove regular file `/root/cmake-2.8.4/Tests/Complex/Cache/CMakeCache.txt'? yes [root@node4 mysql-5.5.22]# rm /root/cmake-2.8.4/Tests/CMakeFiles/CheckFortran/CMakeCache.txt rm: remove regular file `/root/cmake-2.8.4/Tests/CMakeFiles/CheckFortran/CMakeCache.txt'? yes [root@node4 mysql-5.5.22]# rm /root/cmake-2.8.4/Tests/ComplexRelativePaths/Cache/CMakeCache.txt rm: remove regular file `/root/cmake-2.8.4/Tests/ComplexRelativePaths/Cache/CMakeCache.txt'? yes ----再次進行編譯: [root@node4 mysql-5.5.22]#/usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql5.5 -DMYSQL_DATADIR=/opt/mysql5.5/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1
[root@node4 mysql-5.5.22]#make && make install
複製代碼

  備註:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql        //安裝目錄

-DINSTALL_DATADIR=/usr/local/mysql/data         //數據庫存放目錄

-DDEFAULT_CHARSET=utf8                        //使用utf8字符

-DDEFAULT_COLLATION=utf8_general_ci            //校驗字符

-DEXTRA_CHARSETS=all                            //安裝所有擴展字符集

-DENABLED_LOCAL_INFILE=1                        //允許從本地導入數據

  注意事項:

  重新編譯時,需要清除舊的對象文件和緩存信息。

  #make clean

  #rm -f CMakeCache.txt

  #rm -rf /etc/my.cnf

六、設置目錄權限

[root@node4 ~]# cd /opt/mysql5.5/
[root@node4 mysql5.5]# chown -R root:mysql .     //把當前目錄中所有文件的所有者設爲root,所屬組爲mysql                            
[root@node4 mysql5.5]# chown -R mysql:mysql data/

七、設置mysql配置文件

複製代碼
[root@node4 mysql5.5]# cp support-files/my-medium.cnf /etc/my.cnf    //將mysql的啓動服務添加到系統服務中
[root@node4 mysql5.5]# cp support-files/my-medium.cnf my.cnf
[root@node4 mysql5.5]# more my.cnf 
----在mysqld下面添加basedir = /opt/mysql5.5 datadir = /opt/mysql5.5/data    
[mysqld]
port        = 3306
socket        = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir = /opt/mysql5.5
datadir = /opt/mysql5.5/data
複製代碼

八、創建系統數據庫的表

複製代碼
----在這裏指定了配置文件和用戶     
[root@node4 mysql5.5]# scripts/mysql_install_db  --defaults-file=./my.cnf --user=mysql      
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/opt/mysql5.5/bin/mysqladmin -u root password 'new-password'
/opt/mysql5.5/bin/mysqladmin -u root -h node4 password 'new-password'

Alternatively you can run:
/opt/mysql5.5/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /opt/mysql5.5 ; /opt/mysql5.5/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /opt/mysql5.5/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /opt/mysql5.5/scripts/mysqlbug script!
複製代碼

九、設置環境變量

[root@node4 ~]# vi /root/.bash_profile 
----在PATH=$PATH:$HOME/bin添加參數爲:

PATH=$PATH:$HOME/bin:/opt/mysql5.5/bin:/opt/mysql5.5/lib

[root@node4 ~]# source /root/.bash_profile 

十、手動啓動mysql

複製代碼
[root@node4 mysql5.5]# ./bin/mysqld_safe --user=mysql &   //啓動MySql但不能停止
[1] 27412
[root@node4 mysql5.5]# 130728 08:34:38 mysqld_safe Logging to '/opt/mysql5.5/data/node4.err'.
130728 08:34:38 mysqld_safe Starting mysqld daemon with databases from /opt/mysql5.5/data

----這裏MYSQL的root用戶還沒有配置密碼,所以空值。需要輸入密碼時,直接點回車鍵即可。
[root@node4 mysql5.5]# ./bin/mysqladmin -u root -p shutdown Enter password: 130728 08:34:46 mysqld_safe mysqld from pid file /opt/mysql5.5/data/node4.pid ended [1]+ Done ./bin/mysqld_safe --user=mysql
複製代碼

十一、另一個簡單的啓動mysql的方法(mysql已經被添加到系統服務中)

[root@node4 mysql5.5]# service mysql start
[root@node4 mysql5.5]# service mysql stop
[root@node4 mysql5.5]# service mysql restart

  如果上述命令出現:mysql未識別的服務

[root@node4 mysql5.5]# service mysql start
mysql.server: unrecognized service

  則可能mysql還沒添加到系統服務中,下面用另一個方法添加:

[root@node4 mysql5.5]# cp support-files/mysql.server  /etc/init.d/mysql
[root@node4 mysql5.5]# service mysql start
Starting MySQL...                                          [  OK  ]
[root@node4 mysql5.5]# service mysql stop
Shutting down MySQL.                                       [  OK  ]

  注意:主要是將mysql.server拷貝到/etc/init.d中,命名爲mysql。然後再用#service mysql start 來啓動mysql即可。

十二、修改Mysql的root用戶密碼以及打開遠程連接

複製代碼
[root@node4 ~]# /opt/mysql5.5/bin/mysql -u root mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.22-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Database changed
mysql> desc user;
----爲root添加遠程連接的能力。
mysql
> grant all privileges on *.* to root@"%" identified by "root"; Query OK, 0 rows affected (0.03 sec) mysql> update user set Password = password('123456') where User='root'; Query OK, 5 rows affected (0.02 sec) Rows matched: 5 Changed: 5 Warnings: 0 mysql> select Host,User,Password from user where User='root'; +-----------+------+-------------------------------------------+ | Host | User | Password | +-----------+------+-------------------------------------------+ | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | node4 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | ::1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-----------+------+-------------------------------------------+ 5 rows in set (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> exit; Bye [root@node4 ~]# /opt/mysql5.5/bin/mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.5.22-log Source distribution Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.10 sec) mysql> select version(); +------------+ | version() | +------------+ | 5.5.22-log | +------------+ 1 row in set (0.02 sec)
複製代碼

附錄:
  1. groupadd mysql
  2. useradd -g mysql mysql
  3. tar zxvf mysql-VERSION.tar.gz
  4. cd mysql-VERSION
  5. ./configure --prefix=/usr/local/mysql   
  --without-debug   
  --enable-thread-safe-client  
  --enable-assembler   
  --enable-profiling   
  --with-mysqld-ldflags=-all-static  
  --with-client-ldflags=-all-static   
  --with-charset=latin1   
  --with-extra-charsets=utf8,gbk  
  --with-mysqld-user=mysql   
  --without-embedded-server  
  --with-server-suffix=bbk   
  --with-plugins=innobase,partition
  6. make
  7. make install
  8.mkdir data
  9.chown mysql:mysql ./data/ -R
  10. cp support-files/my-medium.cnf /etc/my.cnf
  11.在my.cnf mysqld標籤下中添加:
     basedir=/opt/mysql5
     datadir=/opt/mysql5/data
  12. ./bin/mysql_install_db --default-file=./my.cnf --user=mysql
  13. select version();


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章