CentOS下的MySQL原始碼安裝

2021-07-13 07:33:08 字數 4507 閱讀 3656

linux下mysql的三種安裝方式(我用的是centos6.6,mysql版本是5.6.16)

1、rpm包安裝(可能存在依賴問題)

2、yum安裝(比較方便)

3、原始碼包安裝(推薦)

以下以原始碼包安裝為例:

相對於5.5版本,mysql5.6作出了不少改進,其原始碼安裝配置方式也有所變化,安裝的具體步驟如下(安裝前確保一些基礎配置沒問題,如網路)。

# 修改防火牆設定,開啟3306埠(根據具體情況,也可以關閉防火牆)

vi /etc/sysconfig/iptables

-a input -m state –state new -m tcp -p tcp –dport 3306 -j accept

# 重啟防火牆使新設定生效

service iptables restart

# 新增使用者組

groupadd mysql

# 新增使用者

useradd mysql -g mysql

# 新建資料庫執行檔案目錄

mkdir -p /usr/local/mysql

# 新建資料庫資料檔案目錄

mkdir -p /db/mysql/data

# 編輯path搜尋路徑

vi /etc/profile

在末尾加入下面兩行

path=/usr/local/mysql/bin:/usr/local/mysql/lib:$path

export path

# 生效path搜尋路徑

source /etc/profile

# 安裝編譯原始碼所需的工具和庫

yum -y install gcc gcc-c++ ncurses-devel cmake make perl

# 解壓縮原始碼包

tar -zxvf mysql-5.6.16.tar.gz -c /usr/local

# 進入解壓縮原始碼目錄

cd /usr/local/mysql-5.6.16

# 從mysql5.5起,mysql原始碼安裝開始使用cmake了,執行原始碼編譯配置指令碼(可以把下面的複製過去)。

cmake \

-dcmake_install_prefix=/usr/local/mysql \

-dmysql_unix_addr=/usr/local/mysql/mysql.sock \

-ddefault_charset=utf8 \

-ddefault_collation=utf8_general_ci \

-dwith_myisam_storage_engine=1 \

-dwith_innobase_storage_engine=1 \

-dwith_archive_storage_engine=1 \

-dwith_blackhole_storage_engine=1 \

-dwith_memory_storage_engine=1 \

-dwith_readline=1 \

-denabled_local_infile=1 \

-dmysql_datadir=/db/mysql/data \

-dmysql_user=mysql \

-dmysql_tcp_port=3306

# 編譯原始碼,這一步時間會較長,耐心等待。

make

# 安裝

make install

# 清除安裝臨時檔案

make clean

# 修改目錄擁有者

chown -r mysql:mysql /usr/local/mysql

chown -r mysql:mysql /db/mysql/data

# 進入安裝路徑

cd /usr/local/mysql

# 執行初始化配置指令碼,建立系統自帶的資料庫和表。

scripts/mysql_install_db –user=mysql –datadir=/db/mysql/data

初始化指令碼在 /usr/local/mysql/my.cnf 生成了配置檔案。需要更改該配置檔案的所有者:

chown -r mysql:mysql /usr/local/mysql

需要注意的是:在啟動mysql服務時,會按照一定次序搜尋my.cnf,先在/etc目錄下找,找不到則會搜尋」$basedir/my.cnf」,在本例中就是 /usr/local/mysql/my.cnf,這是新版mysql的配置檔案的預設位置!

在centos 6.6版作業系統的最小安裝完成後,在/etc目錄下會存在乙個my.cnf,需要將此檔案更名為其他的名字,如:/etc/my.cnf.bak,否則,該檔案會干擾原始碼安裝的mysql的正確配置,造成無法啟動。

# 復**務啟動指令碼

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

# 啟動mysql服務

service mysql start

# 設定開機自啟動

chkconfig mysql on

#修改mysql使用者root的密碼

mysql -s /usr/local/mysql/mysql.sock

mysql>use mysql;

mysql>update mysql.user set password=password(「123456」) where user=』root』;

mysql>flush privileges;

mysql>exit;

# 可選:執行安全設定指令碼,修改mysql使用者root(不是系統的root!)的密碼,禁止root遠端連線(防止破解密碼),移除test資料庫和匿名使用者,強烈建議生產伺服器使用:

/usr/local/mysql/bin/mysql_secure_installation

可能出現的錯誤:

0、make編譯過程中,如出現「警告:提領型別雙關的指標將破壞強重疊規則」錯誤,可以忽略。

1、錯誤:could not find curses

先刪除掉cmakecache.txt ,再yum install ncurses-devel即可。

[root@localhost mysql-5.6.16]# rm cmakecache.txt

2:出現如下錯誤:

/usr/local/mysql-5.6.16/sql/mysqld.cc: in function 『void handle_connections_sockets()』:

/usr/local/mysql-5.6.16/sql/mysqld.cc:5131: 錯誤:從型別 『size_socket*』 到型別 『socklen_t*』 的轉換無效

/usr/local/mysql-5.6.16/sql/mysqld.cc:5131: 錯誤: 初始化實參 3,屬於 『int accept(int, sockaddr*, socklen_t*)』

/usr/local/mysql-5.6.16/sql/mysqld.cc:5198: 錯誤:從型別 『int*』 到型別 『socklen_t*』 的轉換無效

/usr/local/mysql-5.6.16/sql/mysqld.cc:5198: 錯誤: 初始化實參 3,屬於 『int getsockname(int, sockaddr*, socklen_t*)』

make[2]: * [sql/cmakefiles/sql.dir/mysqld.cc.o] 錯誤 1

make[1]: * [sql/cmakefiles/sql.dir/all] 錯誤 2

make: * [all] 錯誤 2

可以執行以下操作:

1):清除之前cmake和編譯

[root@localhost mysql-5.6.16]# make clean

[root@localhost mysql-5.6.16]# rm cmakecache.txt

2):刪除系統自帶mysql安裝軟體(根據你自己系統的實際情況,編譯報錯後,這一步我沒做,貌似也沒啥問題,可以先試試1、3)

[root@localhost ~]# rpm -qa | grep mysql

mysql-devel-5.1.66-2.el6_3.x86_64

mysql-5.1.66-2.el6_3.x86_64

mysql-libs-5.1.66-2.el6_3.x86_64

[root@localhost ~]# rpm -e –nodeps –allmatches mysql

[root@localhost ~]# rpm -qa | grep mysql

mysql-devel-5.1.66-2.el6_3.x86_64

mysql-libs-5.1.66-2.el6_3.x86_64

rpm -e –nodeps –allmatches mysql 表示:刪除mysql client和server包但不刪除他們所關聯的包

3):重新cmake和make

redhat7 4下編譯執行mysql原始碼

step 1 環境準備 安裝動態庫版本如下 1 gmp 6.1.0 2 mpfr 3.1.4 3 mpc 1.0.3 依賴庫編譯安裝步驟 configure prefix usr local gmp 6.1.0 configure prefix usr local mpfr 3.1.4 with g...

MAC OS X下的玩轉Chromium原始碼

首先贊一下老c家的markdown編輯器。題歸正傳,大家是不是久仰了chromium的源 但是google不讓看啊誒。原始碼目錄結構編譯鏈結擇一角而玩味之貢獻 首先,訪問不了這個 超正的官方 這是個git庫,clone不下來,甚至連不上 誰可以告知下大家 不好意思,這個是慢了一年的 可以fork,老...

ConcurrentHashMap的原始碼分析

put final v putval k key,v value,boolean onlyifabsent 在上一步的else if中 f 不為null時,則判斷f的hash值是否為moved,即 1,如果為 1,表示正在擴容 else if fh f.hash moved 協助資料遷移 tab h...