CentOS源碼部署系列(四)安裝MySQL

[3]MySQL源碼安裝

查看服務(wù)器以前有沒(méi)有mysql或者mariaDB

rpm -qa | grep -i mysql
rpm -qa | grep -i mariadb

刪除以前的數(shù)據(jù)庫(kù)

rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64
#注:如上命令刪除不成功,有別的軟件依賴無(wú)法刪除時(shí),如下操作:
sudo yum remove  mariadb-libs-5.5.50-1.el7_2.x86_64

#如果有,清除以往的數(shù)據(jù)庫(kù)配置
sudo mv /etc/my.cnf /etc/mysql.cof.back

下載MySQL社區(qū)版源碼

cd /download

#CentOS下載Linux通用的版本就可以了
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.34.tar.gz

#tar解壓
tar -zxvf mysql-5.7.34.tar.gz

#進(jìn)入mysql文件夾
cd mysql-5.7.34

安裝依賴

sudo yum install -y cmake make gcc gcc-c++ wget ncurses-devel cmake make perl ncurses-devel openssl-devel bison-devel libaio libaio-devel

創(chuàng)建應(yīng)用目錄和數(shù)據(jù)目錄

sudo mkdir -p /usr/local/mysql
sudo mkdir /usr/local/mysql/data

創(chuàng)建mysql用戶和用戶組

# 創(chuàng)建用戶組
groupadd mysql
# 創(chuàng)建mysql用戶,所屬組為mysql
useradd -s /bin/bash -m -g mysql mysql

創(chuàng)建MySQL目錄

sudo mkdir -p /usr/local/mysql/data/bin_log
sudo mkdir -p /usr/local/mysql/data/db_file
sudo mkdir -p /usr/local/mysql/data/innodb_log
sudo mkdir -p /usr/local/mysql/data/innodb_ts
sudo mkdir -p /usr/local/mysql/data/log
sudo mkdir -p /usr/local/mysql/data/relay_log
sudo mkdir -p /usr/local/mysql/data/tmpdir
sudo mkdir -p /usr/local/mysql/data/undo_log

創(chuàng)建的目錄的所屬用戶與所屬組為mysql:mysql

sudo chown -R mysql:mysql /usr/local/mysql

cmake編譯

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data  \
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system \
-DWITH_BOOST=boost 

#選項(xiàng)說(shuō)明:
-DCMAKE_INSTALL_PREFIX :安裝路勁
-DMYSQL_DATADIR : 數(shù)據(jù)目錄
-DMYSQL_TCP_PORT :端口號(hào)
-DMYSQL_UNIX_ADDR :套鏈接文件位置

#注:如果編譯出現(xiàn)錯(cuò)誤,請(qǐng)先刪除CMakeCache.txt后,再重新編譯:
rm -rf CMakeCache.txt

#如果安裝報(bào)錯(cuò):tar -zxvf  boost_1_59_0.tar.gz 無(wú)法解壓 請(qǐng)下載可用文件:
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

#同時(shí)cmake 選項(xiàng):
#-DDOWNLOAD_BOOST=1 \
#-DWITH_BOOST=/usr/local/boost
#改成:
-DWITH_BOOST=/usr/local/boost/boost_1_59_0.tar.gz

#重新Cmake。
#如果出現(xiàn)下面的提示就表示成功生成了編譯環(huán)境:
-- Configuring done
-- Generating done

編譯安裝后進(jìn)入目錄

sudo make && sudo make install

cd /usr/local/mysql

數(shù)據(jù)庫(kù)初始化操作

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

2021-05-26T00:52:37.703161Z 1 [Note] A temporary password is generated for root@localhost: ej6,Hg5&dSFZ
注: root@localhost: 為初始密碼(記錄下)

設(shè)置開(kāi)機(jī)自啟動(dòng)

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chmod +x /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/* /usr/local/bin/
ln -s /usr/local/mysql/bin/* /usr/bin/
chkconfig mysqld on

啟動(dòng)測(cè)試

systemctl start mysql
或者
service mysql start

初始化MySQL

編寫(xiě)配置文件

sudo vim /usr/local/mysql/my.cnf

[client]
port = 3306

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
plugin_dir=/usr/local/mysql/lib/plugin
log-error=/usr/local/mysql/data/error.log

#默認(rèn)存儲(chǔ)引擎INNODB
default-storage-engine=INNODB

skip-name-resolve
#禁止MySQL對(duì)外部連接進(jìn)行DNS解析,使用這一選項(xiàng)可以消除MySQL進(jìn)行DNS解析的時(shí)間。但需要注意,如果開(kāi)啟該選項(xiàng),則所有遠(yuǎn)程主機(jī)連接授權(quán)都要使用IP地址方式,否則MySQL將無(wú)法正常處理連接請(qǐng)求!
back_log = 384
#back_log參數(shù)的值指出在MySQL暫時(shí)停止響應(yīng)新請(qǐng)求之前的短時(shí)間內(nèi)多少個(gè)請(qǐng)求可以被存在堆棧中。 如果系統(tǒng)在一個(gè)短時(shí)間內(nèi)有很多連接,則需要增大該參數(shù)的值,該參數(shù)值指定到來(lái)的TCP/IP連接的偵聽(tīng)隊(duì)列的大小。不同的操作系統(tǒng)在這個(gè)隊(duì)列大小上有它自己的限制。 試圖設(shè)定back_log高于你的操作系統(tǒng)的限制將是無(wú)效的。默認(rèn)值為50。對(duì)于Linux系統(tǒng)推薦設(shè)置為小于512的整數(shù)。
key_buffer_size = 256M
#key_buffer_size指定用于索引的緩沖區(qū)大小,增加它可得到更好的索引處理性能。對(duì)于內(nèi)存在4GB左右的服務(wù)器該參數(shù)可設(shè)置為256M或384M。注意:該參數(shù)值設(shè)置的過(guò)大反而會(huì)是服務(wù)器整體效率降低!
max_allowed_packet = 4M
thread_stack = 256K
#table_cache = 128K
sort_buffer_size = 6M
#查詢排序時(shí)所能使用的緩沖區(qū)大小。注意:該參數(shù)對(duì)應(yīng)的分配內(nèi)存是每連接獨(dú)占,如果有100個(gè)連接,那么實(shí)際分配的總共排序緩沖區(qū)大小為100 × 6 = 600MB。所以,對(duì)于內(nèi)存在4GB左右的服務(wù)器推薦設(shè)置為6-8M。
read_buffer_size = 4M
#讀查詢操作所能使用的緩沖區(qū)大小。和sort_buffer_size一樣,該參數(shù)對(duì)應(yīng)的分配內(nèi)存也是每連接獨(dú)享。
join_buffer_size = 8M
#聯(lián)合查詢操作所能使用的緩沖區(qū)大小,和sort_buffer_size一樣,該參數(shù)對(duì)應(yīng)的分配內(nèi)存也是每連接獨(dú)享。
myisam_sort_buffer_size = 64M
thread_cache_size = 64
query_cache_size = 64M
#指定MySQL查詢緩沖區(qū)的大小??梢酝ㄟ^(guò)在MySQL控制臺(tái)觀察,如果Qcache_lowmem_prunes的值非常大,則表明經(jīng)常出現(xiàn)緩沖不夠的情況;如果Qcache_hits的值非常大,則表明查詢緩沖使用非常頻繁,如果該值較小反而會(huì)影響效率,那么可以考慮不用查詢緩沖;Qcache_free_blocks,如果該值非常大,則表明緩沖區(qū)中碎片很多。
tmp_table_size = 256M
max_connections = 768
#指定MySQL允許的最大連接進(jìn)程數(shù)。如果在訪問(wèn)論壇時(shí)經(jīng)常出現(xiàn)Too Many Connections的錯(cuò)誤提 示,則需要增大該參數(shù)值。
max_connect_errors = 10000000
wait_timeout = 10
#指定一個(gè)請(qǐng)求的最大連接時(shí)間,對(duì)于4GB左右內(nèi)存的服務(wù)器可以設(shè)置為5-10。
#thread_concurrency = 8
#該參數(shù)取值為服務(wù)器邏輯CPU數(shù)量*2,在本例中,服務(wù)器有2顆物理CPU,而每顆物理CPU又支持H.T超線程,所以實(shí)際取值為4*2=8
##skip-networking
#開(kāi)啟該選項(xiàng)可以徹底關(guān)閉MySQL的TCP/IP連接方式,如果WEB服務(wù)器是以遠(yuǎn)程連接的方式訪問(wèn)MySQL數(shù)據(jù)庫(kù)服務(wù)器則不要開(kāi)啟該選項(xiàng)!否則將無(wú)法正常連接!
innodb_flush_log_at_trx_commit=1
#設(shè)置為0就是等到innodb_log_buffer_size列隊(duì)滿后再統(tǒng)一儲(chǔ)存,默認(rèn)為1
innodb_log_buffer_size=2M
#默認(rèn)為1M
innodb_thread_concurrency=8
#你的服務(wù)器CPU有幾個(gè)就設(shè)置為幾,建議用默認(rèn)一般為8
read_rnd_buffer_size=16M
#默認(rèn)為256K
sort_buffer_size=32M
#默認(rèn)為256K


service mysql restart

并在my.cnf中開(kāi)啟或添加如下選項(xiàng)


my.cnf配置.png

配置mysql快捷命令

ln -s /usr/local/mysql/bin /usr/local/xxx
ln -s /usr/local/mysql/lib /usr/local/xxx

啟動(dòng)mysql

service mysqld start

登陸MySQL并修改密碼

mysql -uroot  -p 
# 輸入初始化最后的密碼
# 登陸mysql需要修改root密碼,否則會(huì)出現(xiàn)下列情況:
root@localhost : (none) 11:16:52> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

#修改root密碼
#三選一
1.set password='MYSQL'; 
2.ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
3. SET PASSWORD = PASSWORD('新密碼');)

#刷新權(quán)限
FLUSH PRIVILEGES;

關(guān)閉mysql

service mysqld stop

啟動(dòng)MySQL遠(yuǎn)程訪問(wèn)

#1.防火墻開(kāi)啟3306端口(永久生效)
firewall-cmd --add-port=8001/tcp --permane
參考[https://jingyan.baidu.com/article/adc81513944addf723bf73af.html](https://jingyan.baidu.com/article/adc81513944addf723bf73af.html)

#2.添加MySQL用戶和授權(quán):
參考 [https://www.cxiansheng.cn/server/306](https://www.cxiansheng.cn/server/306)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容