MySQL8
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(MySQL8);
*目次 [#n451abf1]
#contents
*関連ページ [#o3976052]
-[[./utf8mb4]]
*参考情報 [#fc93aae4]
*設定 [#d805ca20]
**export/importでcollateが異なってしまう [#r7f695c4]
-mysqldumpによるexport時、create tableのcharsetがutf8mb4...
-import時にcollateがutf8mb4_0900_ai_ciになってしまう(coll...
-これはcharsetだけ指定されている場合、そのcharsetのデフォ...
-これを避けるためには、charsettとcollateをcreate tableで...
**既存のテーブルのcollateを一括設定 [#zd9a2c93]
-[[mysql - How to convert all tables in database to one c...
-以下のコマンドでcollateを変更するSQLを生成できる。以下を...
#pre{{
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NA...
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="mydb"
AND TABLE_TYPE="BASE TABLE";
}}
-以下のように実行してファイルに保存。
mysql --skip-column-names < collate.sql > collate_change...
-collate_change.sqlの内容を確認。。
ALTER TABLE mydb.test_table COLLATE utf8mb4_bin;
(...)
-実行。環境によって少し時間が必要かも。
mysql < collate_change.sql
**caching_sha2_password関連 [#e4f398d7]
-古いライブラリから認証できない場合がある(PHP 7.3以前。PH...
-もうしばらく安定するまでmysql_native_passwordに設定して...
-[[MySQL8.0 認証方式を変更する(Laravel5) - Qiita:https://...
***状態の確認 [#abc97b85]
-以下のSQLで確認できる
SELECT user, host, plugin FROM mysql.user;
***新規ユーザーの認証方法を変更 [#y8f706be]
-/etc/my.cnfを変更。
[mysqld]
default_authentication_plugin=mysql_native_password
***既存ユーザーの認証方法を変更 [#ofaece70]
-以下のSQLで実行。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_nati...
**バイナリログを無効化する [#c82f6c12]
-MySQL8ではバイナリログがデフォルトで有効になっている。
-開発マシンでバイナリログが不要な場合、以下の手順で無効化...
-バイナリログ確認。mysqlコマンドで接続し以下のSQLを実行。
SHOW MASTER LOGS;
-バイナリログ削除。
PURGE MASTER LOGS before now();
-my.cnfに以下を追加しサーバー再起動。
disable-log-bin
*トラブルシューティング [#e0e84702]
**MySQLアップグレードで起動しなくなった [#sb76f324]
-MySQL 8のマイナーバージョンアップで以下のエラーが発生。
#pre{{
2022-06-22T05:20:50.904777Z 4 [ERROR] [MY-013178] [Server...
2022-06-22T05:20:50.907978Z 0 [ERROR] [MY-013380] [Server...
}}
-MySQL 8はアップグレード時にそれ自体でアップグレード処理...
-以下の方法で手動で起動できた。「--upgrade=FORCE」がデフ...
/opt/local/lib/mysql8/bin/mysqld --user=_mysql --upgrade...
-原因はわからいけれどsysデータベースがエラーだということ...
$ mysqldump --no-data --routines --databases sys > sys_d...
$ mysql < sys_dump.sql # エラーが発生したマシン
**「grant all privileges」でエラー [#l935e464]
-MySQL 8ではcreate userしてからgrantしないとだめらしい。
-[[How to grant all privileges to root user in MySQL 8.0 ...
#pre{{
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRA...
}}
**unknown variable 'validate_password.policy=LOW'が表示さ...
-どうやらvalidate_password componentが有効でないとこのエ...
-以下のコマンドで確認できる。[[MySQL8.0 小ネタ集 | スマー...
SELECT * FROM mysql.component;
-CentOS 8ではデフォルトでvalidate_passwordコンポーネント...
**リモートから接続できない [#l5d6c2e6]
-skip-networking、bind-addressの設定を確認する。以下はリ...
#pre{{
bind-address=0.0.0.0
skip-networking=0
}}
-現在の設定はこれで確認できる。
$ mysql -b -e "SHOW GLOBAL VARIABLES like 'bind_address'"
-それでもだめな場合ユーザー(rootなど)のアクセス許可がloca...
select user,host from mysql.user;
| root | localhost |
-以下で作成する。
create user root@'%' identified by 'hogehoge';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPT...
**mysqldump: Error: 'Access denied; you need (at least on...
-[[mysqldumpでPROCESS権限(PROCESS privilege)を要求される ...
-以下を実行。
mysql > GRANT PROCESS ON *.* TO "your-user";
**PHP 7.3から接続できない [#u3e3a5a0]
-「PHP Warning: mysqli_real_connect(): (HY000/2054): The...
the client」エラーが発生。
-PHP 7.2以前のバージョンは、MySQL8の新しいにんしょうほうc...
-[[【PHP】いつの間にやらPDOはMySQLの認証方法 caching_sha2...
-PHP 7.4なら大丈夫?と思ったがPHP 7.4からも同様のエラーで...
--MacPortsはだめ
--UbuntuはOK
-面倒をさけるためしばらくmysql_native_passwordをデフォル...
終了行:
&tag(MySQL8);
*目次 [#n451abf1]
#contents
*関連ページ [#o3976052]
-[[./utf8mb4]]
*参考情報 [#fc93aae4]
*設定 [#d805ca20]
**export/importでcollateが異なってしまう [#r7f695c4]
-mysqldumpによるexport時、create tableのcharsetがutf8mb4...
-import時にcollateがutf8mb4_0900_ai_ciになってしまう(coll...
-これはcharsetだけ指定されている場合、そのcharsetのデフォ...
-これを避けるためには、charsettとcollateをcreate tableで...
**既存のテーブルのcollateを一括設定 [#zd9a2c93]
-[[mysql - How to convert all tables in database to one c...
-以下のコマンドでcollateを変更するSQLを生成できる。以下を...
#pre{{
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NA...
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="mydb"
AND TABLE_TYPE="BASE TABLE";
}}
-以下のように実行してファイルに保存。
mysql --skip-column-names < collate.sql > collate_change...
-collate_change.sqlの内容を確認。。
ALTER TABLE mydb.test_table COLLATE utf8mb4_bin;
(...)
-実行。環境によって少し時間が必要かも。
mysql < collate_change.sql
**caching_sha2_password関連 [#e4f398d7]
-古いライブラリから認証できない場合がある(PHP 7.3以前。PH...
-もうしばらく安定するまでmysql_native_passwordに設定して...
-[[MySQL8.0 認証方式を変更する(Laravel5) - Qiita:https://...
***状態の確認 [#abc97b85]
-以下のSQLで確認できる
SELECT user, host, plugin FROM mysql.user;
***新規ユーザーの認証方法を変更 [#y8f706be]
-/etc/my.cnfを変更。
[mysqld]
default_authentication_plugin=mysql_native_password
***既存ユーザーの認証方法を変更 [#ofaece70]
-以下のSQLで実行。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_nati...
**バイナリログを無効化する [#c82f6c12]
-MySQL8ではバイナリログがデフォルトで有効になっている。
-開発マシンでバイナリログが不要な場合、以下の手順で無効化...
-バイナリログ確認。mysqlコマンドで接続し以下のSQLを実行。
SHOW MASTER LOGS;
-バイナリログ削除。
PURGE MASTER LOGS before now();
-my.cnfに以下を追加しサーバー再起動。
disable-log-bin
*トラブルシューティング [#e0e84702]
**MySQLアップグレードで起動しなくなった [#sb76f324]
-MySQL 8のマイナーバージョンアップで以下のエラーが発生。
#pre{{
2022-06-22T05:20:50.904777Z 4 [ERROR] [MY-013178] [Server...
2022-06-22T05:20:50.907978Z 0 [ERROR] [MY-013380] [Server...
}}
-MySQL 8はアップグレード時にそれ自体でアップグレード処理...
-以下の方法で手動で起動できた。「--upgrade=FORCE」がデフ...
/opt/local/lib/mysql8/bin/mysqld --user=_mysql --upgrade...
-原因はわからいけれどsysデータベースがエラーだということ...
$ mysqldump --no-data --routines --databases sys > sys_d...
$ mysql < sys_dump.sql # エラーが発生したマシン
**「grant all privileges」でエラー [#l935e464]
-MySQL 8ではcreate userしてからgrantしないとだめらしい。
-[[How to grant all privileges to root user in MySQL 8.0 ...
#pre{{
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRA...
}}
**unknown variable 'validate_password.policy=LOW'が表示さ...
-どうやらvalidate_password componentが有効でないとこのエ...
-以下のコマンドで確認できる。[[MySQL8.0 小ネタ集 | スマー...
SELECT * FROM mysql.component;
-CentOS 8ではデフォルトでvalidate_passwordコンポーネント...
**リモートから接続できない [#l5d6c2e6]
-skip-networking、bind-addressの設定を確認する。以下はリ...
#pre{{
bind-address=0.0.0.0
skip-networking=0
}}
-現在の設定はこれで確認できる。
$ mysql -b -e "SHOW GLOBAL VARIABLES like 'bind_address'"
-それでもだめな場合ユーザー(rootなど)のアクセス許可がloca...
select user,host from mysql.user;
| root | localhost |
-以下で作成する。
create user root@'%' identified by 'hogehoge';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPT...
**mysqldump: Error: 'Access denied; you need (at least on...
-[[mysqldumpでPROCESS権限(PROCESS privilege)を要求される ...
-以下を実行。
mysql > GRANT PROCESS ON *.* TO "your-user";
**PHP 7.3から接続できない [#u3e3a5a0]
-「PHP Warning: mysqli_real_connect(): (HY000/2054): The...
the client」エラーが発生。
-PHP 7.2以前のバージョンは、MySQL8の新しいにんしょうほうc...
-[[【PHP】いつの間にやらPDOはMySQLの認証方法 caching_sha2...
-PHP 7.4なら大丈夫?と思ったがPHP 7.4からも同様のエラーで...
--MacPortsはだめ
--UbuntuはOK
-面倒をさけるためしばらくmysql_native_passwordをデフォル...
ページ名: