技術(shù)文檔
Debian 10.9.x編譯安裝MySQL8.0.x
開始安裝Mysql8
1、安裝rpcsvc-proto
cd /usr/local/src
xz -d rpcsvc-proto-1.4.2.tar.xz
tar xvf rpcsvc-proto-1.4.2.tar
cd rpcsvc-proto-1.4.2
./configure
make
make install
2、安裝cmake
cd /usr/local/src
tar zxvf cmake-3.20.2.tar.gz
cd cmake-3.20.2
./configure
make
make install
3、安裝MySQL
3.1、安裝帶boost的安裝包
groupadd mysql #添加mysql組
useradd -g mysql mysql -s /bin/false #創(chuàng)建用戶mysql并加入到mysql組,不允許mysql用戶直接登錄系統(tǒng)
mkdir -p /data/mysql #創(chuàng)建MySQL數(shù)據(jù)庫存放目錄
chown -R mysql:mysql /data/mysql #設(shè)置MySQL數(shù)據(jù)庫存放目錄權(quán)限
mkdir -p /usr/local/mysql #創(chuàng)建MySQL安裝目錄
cd /usr/local/src #進(jìn)入軟件包存放目錄
tar zxvf mysql-boost-8.0.25.tar.gz #解壓
cd mysql-8.0.25 #進(jìn)入目錄
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DINSTALL_DATADIR=/data/mysql -DMYSQL_USER=mysql -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_EMBEDDED_SERVER=1 -DFORCE_INSOURCE_BUILD=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/mysql-8.0.25/boost -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++
#配置,建議根分區(qū)在40GB以上,MySQL在配置安裝過程中大約需要30GB左右的磁盤空間,安裝完成之后又會(huì)釋放一些空間,安裝過程比較慢需要耐心等待。
make #編譯
make install #安裝
3.2開始配置MySQL數(shù)據(jù)庫
rm -rf /etc/my.cnf /etc/mysql/my.cnf #刪除系統(tǒng)默認(rèn)的配置文件(如果默認(rèn)沒有就不用刪除)
cd /usr/local/mysql #進(jìn)入MySQL安裝目錄
./bin/mysqld --user=mysql --initialize --basedir=/usr/local/mysql --datadir=/data/mysql #生成mysql系統(tǒng)數(shù)據(jù)庫
--initialize表示默認(rèn)生成密碼, --initialize-insecure 表示不生成密碼, 密碼為空。
看到這一行[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: at2stlV;L9J
記錄下自動(dòng)生成的mysql管理員root賬號登錄密碼at2stlV;L9J
mkdir -p /usr/local/mysql/etc/ #創(chuàng)建mysql配置文件目錄
nano /usr/local/mysql/etc/my.cnf #mysql 8.0.x默認(rèn)沒有配置文件,我們自己創(chuàng)建一個(gè)。
[mysqld]
port=3306
tmpdir = /tmp
datadir=/data/mysql
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
key_buffer_size=16M
max_allowed_packet=128M
default_authentication_plugin=mysql_native_password
open_files_limit = 60000
explicit_defaults_for_timestamp
server-id = 1
character-set-server = utf8
federated
max_connections = 1000
max_connect_errors = 100000
interactive_timeout = 86400
wait_timeout = 86400
sync_binlog=0
back_log=100
default-storage-engine = InnoDB
log_slave_updates = 1
key_buffer_size=16M
[mysqldump]
quick
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysqld-8.0]
sql_mode=TRADITIONAL
[mysqladmin]
force
[client]
password="my password"
port=3306
socket=/tmp/mysql.sock
ctrl+o #保存配置
ctrl+x #退出
mkdir -p /etc/rc.d/
ln -s /etc/init.d /etc/rc.d/ #添加軟連接
ln -s /usr/local/mysql/etc/my.cnf /etc/my.cnf #添加到/etc目錄的軟連接
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #把Mysql加入系統(tǒng)啟動(dòng)
chmod 755 /etc/init.d/mysqld #增加執(zhí)行權(quán)限
apt-get remove insserv #卸載
update-rc.d mysqld defaults 99#加入開機(jī)啟動(dòng)
nano /etc/rc.d/init.d/mysqld #編輯
basedir=/usr/local/mysql #MySQL程序安裝路徑
datadir=/data/mysql #MySQl數(shù)據(jù)庫存放目錄
ctrl+o #保存配置
ctrl+x #退出
systemctl daemon-reload #重啟服務(wù)
service mysqld start #啟動(dòng)
systemctl restart mysqld.service #重啟
nano /etc/profile #把mysql服務(wù)加入系統(tǒng)環(huán)境變量:在最后添加下面這一行
export PATH=$PATH:/usr/local/mysql/bin
ctrl+o #保存配置
ctrl+x #退出
source /etc/profile #使配置立刻生效
下面這兩行把myslq的庫文件鏈接到系統(tǒng)默認(rèn)的位置,這樣你在編譯類似PHP等軟件時(shí)可以不用指定mysql的庫文件地址。
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql/* /usr/include/mysql/
mkdir /var/lib/mysql #創(chuàng)建目錄
mkdir -p /var/lib/mysql/
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock #添加軟鏈接
mysql -u root -p #輸入之前生成的密碼tL/OOv(58%fn回車
ALTER USER root@localhost IDENTIFIED BY 123456 PASSWORD EXPIRE NEVER; #修改密碼,NEVER表示密碼永不過期
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 123456 PASSWORD EXPIRE NEVER; #使用WITH mysql_native_password加密
#MySQL 8.0.x默認(rèn)加密方式從mysql_native_password 更改為 caching_sha2_password,mysql8.0.x之前的客戶端遠(yuǎn)程連接可能報(bào)錯(cuò):authentication plugin caching_sha2
flush privileges; #刷新系統(tǒng)授權(quán)表
exit #退出mysql控制臺(tái)
4、創(chuàng)建MySQL數(shù)據(jù)庫、添加用戶并授權(quán)
數(shù)據(jù)庫名稱:www.osyunwei.com
數(shù)據(jù)庫用戶名:osyunwei.com
數(shù)據(jù)庫密碼:osyunwei
授權(quán)osyunwei.com用戶對www.osyunwei.com具有全部操作權(quán)限
繼續(xù)在mysql控制臺(tái)操作
mysql -u root -p #輸入剛剛修改過的密碼123456,回車
4.1、Create DATABASE IF NOT EXISTS `www.osyunwei.com` default charset utf8 COLLATE utf8_general_ci; #創(chuàng)建數(shù)據(jù)庫
4.2、CREATE USER osyunwei.com@localhost IDENTIFIED BY osyunwei; #創(chuàng)建用戶
CREATE USER osyunwei.com@127.0.0.1 IDENTIFIED WITH mysql_native_password BY osyunwei; #加密方式為mysql_native_password
4.3、grant all privileges on `www.osyunwei.com`.* to osyunwei.com@localhost; #授權(quán)用戶osyunwei.com對數(shù)據(jù)庫www.osyunwei.com具有全部操作權(quán)限
grant all privileges on `www.osyunwei.com`.* to osyunwei.com@127.0.0.1; #授權(quán)用戶
GRANT ALL PRIVILEGES ON *.* TO root@localhost WITH GRANT OPTION; #授權(quán)root用戶具有全部數(shù)據(jù)庫本地權(quán)限
4.4、MySQL5.7版本后要授權(quán)用戶對所有數(shù)據(jù)庫有SUPER權(quán)限,否則上一步對用戶的授權(quán)只能連接但無任何操作權(quán)限。
grant SUPER on *.* to osyunwei.com@localhost ; #授予用戶對所有數(shù)據(jù)庫有SUPER權(quán)限,否則只能連接無任何操作權(quán)限。
grant SUPER on *.* to osyunwei.com@127.0.0.1 ;
flush privileges; #刷新系統(tǒng)授權(quán)表
exit #退出mysql控制臺(tái)
service mysqld restart #重啟mysql數(shù)據(jù)庫
- 上一篇: Centos使用cp
- 下一篇: 寶塔面板出現(xiàn)nginx: [emerg] open()