錯誤現象
FATAL ERROR: Could not find ./bin/my_print_defaults
If you are using a binary release, you must run this script from
within the directory the archive extracted into.
If you compiled MySQL yourself you must run 'make install' first.
根因
執行 `mysql_install_db` 時未指定 `--basedir`,腳本無法定位安裝根目錄下的 `bin/my_print_defaults` 工具。
標準修復命令
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
關鍵參數**:
- `--basedir`:MySQL 安裝根目錄 (含 `bin/` `share/` `scripts/`)。
- `--datadir`:數據文件存放目錄。
- `--user`:運行進程的系統用戶。
完整安裝流程補充
- 建立用戶組/用戶:`groupadd mysql && useradd -r -g mysql -s /bin/false mysql`
- 解壓二進制包:`tar xf mysql-VERSION-linux-glibc2.12-x86_64.tar.gz -C /usr/local/`
- 建立軟連結:`ln -s /usr/local/mysql-VERSION /usr/local/mysql`
- 初始化數據目錄 (上述修復命令)
- 授權目錄:`chown -R mysql:mysql /usr/local/mysql /usr/local/mysql/data`
- 複製配置檔:`cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf`
- 啟動服務:`/usr/local/mysql/support-files/mysql.server start`
- 設定開機自啟:`cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && chkconfig --add mysqld`
常見坑點
- 忘記 `--basedir` 導致找不到 `my_print_defaults`、`fill_help_tables.sql` 等腳本依賴文件。
- `datadir` 目錄已存在舊數據未清理,導致初始化失敗。
- SELinux 阻擋 `mysqld` 寫入 `datadir`,需 `restorecon -Rv /usr/local/mysql/data` 或暫時 `setenforce 0`。