mysql-5.7.14 源碼安裝筆記


安裝編譯

下載源碼

mysql-5.7.14.tar.gz

解壓定義安裝變量

cd /usr/local/src
mysql_version="mysql-5.7.14"
tar -zxf "${mysql_version}.tar.gz"
cd ${mysql_version}

配置

cmake \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/services/${mysql_version} \
-DMYSQL_DATADIR:PATH=/data/${mysql_version} \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DMYSQL_USER=mysql \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=yes

報錯:

CMake Error at cmake/boost.cmake:81 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

  This CMake script will look for boost in <directory>.  If it is not there,
  it will download and unpack it (in that directory) for you.

  If you are inside a firewall, you may need to use an http proxy:

  export http_proxy=http://example.com:80

Call Stack (most recent call first):
  cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST)
  CMakeLists.txt:455 (INCLUDE)

解決:

mysql 依賴boost,添加編譯選項:

-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/services/boost

備注:

  1. cmake 生成的臨時文件是CMakeCache.txt, 需要刪除掉之前配置生成的臨時文件 rm CMakeCache.txt
  2. 重新進行配置檢查,避免由於,更新系統軟件包后,依然使用舊的臨時文件,導致配置找不到相關的庫。

安裝

make
make install

配置啟動

以下操作用戶均為root

創建用戶,數據庫初始化

# 創建mysql運行用戶
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

# 創建mysql數據目錄,並授權
mkdir -p /data/${mysql_version}
chown -R mysql:mysql /usr/local/services/${mysql_version}
chown -R mysql:mysql /data/${mysql_version}

# 初始化mysql 系統數據表
# /usr/local/services/${mysql_version}/bin/mysqld \
--initialize \
--user=mysql \
--datadir=/data/${mysql_version}

2016-08-02T14:27:01.183217Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-08-02T14:27:01.183281Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2016-08-02T14:27:01.183289Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2016-08-02T14:27:02.931391Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-08-02T14:27:03.297417Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-08-02T14:27:03.488097Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 2e93cf2d-58bd-11e6-8ed6-94de801a0a56.
2016-08-02T14:27:03.519545Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-08-02T14:27:04.091878Z 0 [Warning] CA certificate ca.pem is self signed.
2016-08-02T14:27:04.223888Z 1 [Note] A temporary password is generated for root@localhost: _bfdDjzhw0ru


# 創建配置文件
mkdir -p /usr/local/services/${mysql_version}/etc/
cp /usr/local/services/${mysql_version}/support-files/my-default.cnf /usr/local/services/${mysql_version}/etc/my.cnf

/usr/local/services/${mysql_version}/bin/mysql_ssl_rsa_setup

# 設置權限
chown -R root /usr/local/services/${mysql_version}
chown -R mysql /data/${mysql_version}

注意:

  1. 配置文件 etc/my.cnf 需要配置完全,包括安裝目錄,數據存儲目錄,等...
  2. 初始化數據庫表, mysql-5.7.6 之后發生了變更,之前是 mysql_init_db
  3. 若使用etc/my.cnf 中的配置,則需將/etc/my.cnf 中的相關的配置項注釋掉

啟動mysql

/usr/local/services/${mysql_version}/bin/mysqld_safe --user=mysql &

注意:

無需指定--default-file=$basedir/etc/my.cnf,mysql 有默認的配置文件加載順序

/etc/my.cnf
basedir/etc/my.cnf

連接mysql

mysql -uroot -p

注意:

若提示無法使用xx.sock,這是因為沒有指定連接的sock,可配置my.cnf,指定連接的sock

[client]
socket=/data/${mysql_version}/mysql.sock

更新root密碼

update mysql.user set password=password('123456') where user='root';

報錯:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

解決:

SET PASSWORD = PASSWORD('123456');

關閉mysql

/usr/local/services/${mysql_version}/bin/mysqladmin shutdown -uroot -p

設置啟動項

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

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM