# 安裝相關軟件
yum install -y gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel make cmake
# 獲取MySQL源碼,MySQL版本下載鏈接:https://dev.mysql.com/downloads/mysql/
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13.tar.gz
tar zxvf mysql-8.0.13.tar.gz
cd mysql-8.0.13
# 添加操作系統的MySQL用戶
groupadd -r mysql
mkdir -p /data/mysql/data
chown -R mysql.mysql /data/mysql/data/
# 添加配置文件目錄
mkdir -p /etc/mysql
chown -R mysql.mysql /etc/mysql
# 編譯MySQL
mkdir -p /data/mysql
chown -R mysql.mysql /data/mysql
# -DCMAKE_INSTALL_PREFIX:指定安裝目錄
# -DMYSQL_DATADIR:數據文件存放位置
# -DSYSCONFDIR:配置文件目錄
# -DDOWNLOAD_BOOST:實時下載boost
# -DWITH_BOOST:下載boost保存目錄
cmake . -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc/mysql -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/data/mysql/boost
make
make install
# 對安裝錄更改用戶權限
chown root.mysql -R /data/mysql/
# 安裝完成后,進入安裝目錄中,對mysql進行初始化操作
cd /data/mysql
bin/mysqld --initialize
# 拷貝服務腳本,賦權限並添加到啟動列表中
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
# 修改配置文件
vi /etc/mysql/my.cnf
輸入:
[mysqld]
basedir = /data/mysql
datadir = /data/mysql/data
port = 3306
server_id = 1
socket = /tmp/mysql.sock
user = mysql
[client]
port = 3306
socket = /tmp/mysql.sock
# 啟動服務
bin/mysqld &
至此MySQL已經安裝完成了,接下來是一些優化的操作
# 配置環境變量
echo "export PATH=/data/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
# 刪除系統安裝完成后產生的匿名用戶並給root設置密碼
# 若登錄mysql時,忘記了用戶密碼可以在啟動mysqld服務時加--skip-grant-tables即可直接登錄: mysqld --skip-grant-tables &
# 登錄mysql
mysql -uroot -hlocalhost -p
# 刪除所有匿名用戶,以下是刪除的命令
drop user 'username'@'localhost';
# 給用戶設定密碼的兩種方式
1. UPDATE user SET password = PASSWORD('your_password') WHERE user = 'username';
FLUSH PRIVILEGES;
2. SET PASSWORD FOR root@localhost = PASSWORD('your_password');
# 創建用戶並授權用戶
create user 'username'@'localhost' identified by 'your_password';
create database database_name default character set = 'utf8' default collate = 'utf8_general_ci';
grant all privileges on database_name.* to 'username'@'localhost';
flush privileges;