生產環境 Linux 安裝 MySQL 推薦使用專屬用戶/群組運行,避免 root 權限過大。以下以原始碼 tarball 部署為例。
su - root
groupadd mysql
useradd -r -g mysql -s /bin/false mysql # -r 系統用戶,-s 禁用登入 Shell
cd /usr/local
# 下載對應版本 tarball,例如 mysql-8.0.33-linux-glibc2.17-x86_64.tar.xz
tar -xvf mysql-8.0.33-linux-glibc2.17-x86_64.tar.xz
ln -s mysql-8.0.33-linux-glibc2.17-x86_64 mysql # 建立無版本號符號連結
cd /usr/local/mysql
mkdir -p data
chown -R mysql:mysql data
bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data
# 輸出會顯示臨時 root 密碼,請妥善記錄
chown -R root:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
# 背景啟動
bin/mysqld_safe --user=mysql &
# 簡單驗證
bin/mysqladmin -u root -p version
# 輸入初始化時的臨時密碼
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
# systemd 系統請用 support-files/mysql.service 複製至 /etc/systemd/system/
bin/mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPass123';
CREATE DATABASE test2;
USE test2;
CREATE TABLE books (id INT AUTO_INCREMENT PRIMARY KEY, name CHAR(50) NOT NULL);
INSERT INTO books (name) VALUES ('PHP for Beginners'), ('Red Hat Linux 6 Server');
SELECT * FROM books;
error.log(通常在 data 目錄)、datadir 權限、my.cnf 語法。bind-address、防火牆 3306、skip-networking 未開啟。my.cnf 設定 character-set-server=utf8mb4、collation-server=utf8mb4_unicode_ci。