Mysql
MySQL 不讀取 ~/.my.cnf 中的使用者特定選項
我希望伺服器每次啟動時都執行一個初始 SQL 查詢:
[mysqld] init-connect='SET NAMES utf8mb4'
我希望它只是使用者特定的而不是全域的。所以我在使用者的主目錄(
~/.my.cnf
)中創建了一個 .my.cnf,但是當我嘗試查看它是否影響了伺服器時,它沒有顯示我添加的設置,而且似乎我的設置被伺服器忽略了:mysqld --print-defaults ------------------------------------ --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --skip-external-locking --bind-address=0.0.0.0 -- key_buffer_size=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover-options=BACKUP --query_cache_limit=1M --query_cache_size=16M --log_error=/var/log/mysql/error.log --expire_logs_days=10 --max_binlog_s ize=100M --default_password_lifetime=0
這也是以下結果
SHOW VARIABLES LIKE 'character_set_%';
:我希望將這些參數設置為
'utf8mb4'
觀察伺服器啟動的時間。character_set_client character_set_results character_set_connection
我也應該說我使用Laravel Vagrant作為我的開發環境
init-connect
當您以 MySQLroot
使用者身份連接時將被忽略。檢查
config/database.php
Laravel 的文件。它需要這樣說:'mysql' => [..., 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', ...]
使用 mysql 客戶端,要使用不同於預設字元集的字元集,您可以在
SET NAMES
每次啟動時顯式執行。要更輕鬆地完成相同的結果,請將
--default-character-set
選項設置添加到 mysql 命令行或選項文件中。例如,以下選項文件設置會在koi8r
每次呼叫 mysql 時更改三個與連接相關的字元集變數設置:[mysql] default-character-set=koi8r
如果您使用啟用了自動重新連接的 mysql 客戶端(不推薦),最好使用 charset 命令而不是
SET NAMES
. 例如:mysql> charset utf8 Charset changed
charset 命令發出一條
SET NAMES
語句,並更改 mysql 在連接斷開後重新連接時使用的預設字元集。