ubuntu14源碼安裝mysql

環境

Docker version 18.06.3-ce, build d7080c1

Linux c5e082c17dae 4.4.0-31-generic #50~14.04.1-Ubuntu SMP

mysql-5.5.62

安裝流程

創建用戶

groupadd mysql
useradd mysql -g mysql -d /usr/local/mysql -s /bin/sh

解壓安裝

apt-get install libncurses5-dev bison libaio1

mkdir build
cd build

cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1  \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DSYSCONFDIR=/etc \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_BOOST=/usr/local/boost

-DCMAKE_INSTALL_PREFIX:安裝路徑
-DMYSQL_DATADIR:數據存放目錄
-DWITH_BOOST:boost 源碼路徑
-DSYSCONFDIR:my.cnf 配置文件目錄
-DEFAULT_CHARSET:數據庫默認字符編碼
-DDEFAULT_COLLATION:默認排序規則
-DENABLED_LOCAL_INFILE:允許從本文件導入數據
-DEXTRA_CHARSETS:安裝所有字符集
-DWITH_INNOBASE_STORAGE_ENGINE=1:安裝InnoDB存儲引擎
-DDEFAULT_CHARSET=utf8:默認編碼設置成utf8
-DWITH_EXTRA_CHARSETS=all:支持其他所有的編碼
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock:指定SOCK文件路徑

make
make install
# 注意新版的 mysql 安裝完畢以後會自動在 etc 下創建一個 mysql 文件夾 ,文件夾內有 my.cnf 配置文件 但是我們不需要,直接刪除即可
rm /etc/mysql/my.cnf

# 複製原 mysql 的配置文件 作爲 etc 下的配置文件)
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

# 編輯 my.cnf 文件 在[mysqld]下面添加以下內容
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
user=mysql

調整文件屬性

# 目錄和文件都屬於mysql用戶
chown -R mysql.mysql /usr/local/mysql/
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /etc/my.cnf

初始化數據庫

cd /usr/local/mysql
sudo scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

修改root密碼

/usr/local/mysql/bin/mysqladmin -u root password 'YOUR PASSWORD'

配置mysql服務

cp support-files/mysql.server /etc/init.d/mysqld
sysv-rc-conf keepalived on # 開機啓動

啓動服務

service mysqld start       # 啓動mysql服務
service mysqld stop        # 停止mysql服務
service mysqld restart     # 重新啓動mysql服務

配置環境變量

vim /etc/profile
#mysql
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
source /etc/profile

遇到的問題

0 ‘cli_list_fields’ undeclared here (not in a function)

如果在根目錄下就新建build裏面編譯,如果在build裏面就在根目錄下編譯。

1 db open error: Driver not loaded Driver not loaded

因爲你的qt沒編譯mysql驅動,只編譯了sqllite的驅動。

查看/usr/local/qtbase/plugins/sqldrivers目錄下,有沒有mysql的so文件。如果有,複製到

/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/

如果沒有

如果你的 mysql 也和我一樣是自己安裝的話還要下載一下 mysql 的動態庫,不然會出現沒有 lib 依賴包的情況。

sudo apt-get install libmysqlclient-dev

源碼解壓後找到你解壓的目錄,進入  /usr/local/qt-everywhere-opensource-src-5.9.2/qtbase/src/plugins/sqldrivers/mysql

開始編譯

qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=/usr/lib/x86_64-linux-gnu/libmysqlclient.so" mysql.pro

make
make install

這樣在  /usr/local/qt-everywhere-opensource-src-5.9.2/qtbase/plugins/sqldrivers  就能在你們找到你想要的驅動了,libqsqlmysql.so

最後複製到/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/下面就可以了

2 mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists.

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld

3 The server quit without updating PID file (/var/run/mysqld/mysqld.pid)

可能的解決方式:
1、可能是 / usr/local/mysql/data / 數據目錄 mysql 用戶沒有權限(修改數據目錄的權限)
解決方法 :給予權限,執行 sudo chmod -R 777 /usr/local/mysql/data/ 然後重新啓動 mysql

2、可能進程裏已經存在 mysql 進程
解決方法:用命令 “ps -ef|grep mysqld” 查看是否有 mysqld 進程,如果有使用 “kill -9 進程號” 殺死,然後重新啓動 mysqld!

3、可能是第二次在機器上安裝 mysql,有殘餘數據影響了服務的啓動。
解決方法:去 mysql 的二進制日誌目錄看看,如果存在 mysql-binlog.index,就趕快把它刪除掉吧

4、mysql 在啓動時沒有指定配置文件時會使用 / etc/my.cnf 配置文件,請打開這個文件查看在 [mysqld] 下有沒有指定數據目錄(datadir)。
解決方法:請在 [mysqld] 下設置這一行:datadir = /opt/mysql/data

5、skip-federated 字段問題
解決方法:檢查一下 / etc/my.cnf 文件中有沒有沒被註釋掉的 skip-federated 字段,如果有就立即註釋掉吧。

6、錯誤日誌目錄不存在
解決方法:使用 “chown” “chmod” 命令賦予 mysql 所有者及權限

7、selinux 惹的禍,如果是 centos 系統,默認會開啓 selinux
解決方法:先臨時改爲警告模式:[root@www php]# setenforce 0
然後打開 / etc/sysconfig/selinux,把 SELINUX=enforcing 改爲 SELINUX=disabled

8、在data裏看日誌,哪報錯解決哪。

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