[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)