mysql

A collection of 6 posts
How to use .mylogin.cnf
mysql

How to use .mylogin.cnf

.mylogin.cnfファイルを使うことでパスワードの入力をすることなく、MySQLへ認証できます。 * MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.2.6 オプションファイルの使用 .mylogin.cnfの注意事項 以下の条件を満たしていないと参照してくれませんでした。 * mysql_config_editorコマンドを使って暗号化されたファイルとして存在する必要がある .mylogin.cnfの作成方法 以下のようにして作成できます。 mysql_config_editor set --host=localhost --login-path=local --user=localuser --password passwordの入力が求められ、その後~/.mylogin.cnfが作成されます。passwordの文字列を引数で指定することはできない。 printすることでデコードすることが出来ます。ただし、パスワードはマスクされています。 $ mysql_config_editor print --al
1 min read
Change default root password of MySQL5.7
mysql

Change default root password of MySQL5.7

※ 追記あり TL;DR mysql --connect-expired-password -u root \ -p$(grep 'temporary password' /var/log/mysqld.log | cut -d' ' -f11) \ -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword1234@';" デフォルトのrootパスワードを変更する方法 MySQL5.7からインストール直後のrootパスワードがmysqld.logに吐かれるようになりました。mysqldを起動すると吐かれる。 この挙動はディストリビューションによって異なるようで、yumリポジトリの場合は上に述べたような挙動になっています。 以下のドキュメントに詳しく書いてあります。 * MySQL :: MySQL 5.7 Reference Manual :: 2.5.1 Installing MySQL on Linux Using
2 min read
When will /usr/my.cnf be created?
mysql

When will /usr/my.cnf be created?

先日、my.cnfに設定したsql_modeが効かなくて困った話をアップしました。 その作業中に、DBサーバによって/usr/my.cnfがあったりなかったりすることを発見しました(しかもMySQLのバージョンは同一)。 この怪奇現象を突き止めるためには、/usr/my.cnfを作成しているmysql_install_dbがいつ実行されているのか突き止める必要があります。 調べたところ、mysqldのinitスクリプトでmysql_install_dbを叩いていました。具体的にはstart()の中で叩かれていました。以下がmysql_install_dbの実行されていたブロックです。 if [ ! -d "$datadir/mysql" ] ; then # First, make sure $datadir is there with correct permissions if [ ! -d "$datadir" -a ! -h "$datadir" -a "x$(dirname "$datadir")" = "x/
1 min read
sql_mode does not work
mysql

sql_mode does not work

MySQLのsql_modeを設定する必要に迫られたので設定しようとしたらハマった…。MySQLのバージョンは5.6系です。OSはCentOS6系です。 * MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.7 サーバー SQL モード 手動で設定する方法 まずは手動で設定する方法。 現在設定されているsql_modeを確認する方法は以下。 SELECT @@GLOBAL.sql_mode; sql_modeを手動で設定する方法は以下。 * 例としてNO_ENGINE_SUBSTITUTIONを指定する場合 SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; ここまでは良い。ただし、この設定はオンメモリなのでmysqldを再起動したら失われます。 なので/etc/my.cnfにsql_modeを設定したかったのですが、ここでハマりました。sql_modeの設定を書いてmysqldをrestartしても設定が反映されない…。 ハマリポイント1 MySQL5.6
2 min read
Configure mariadb client prompt
mysql

Configure mariadb client prompt

基本的にDBに直接入ることは無いけど、せっかくなので(?)プロンプトをカスタマイズしてみる。デフォルト状態だとこんな感じ。 MariaDB [(none)]> ライブで変更するにはPROMPTコマンドを実行する。 MariaDB [(none)]> PROMPT \U [\d] \r:\m \P>\_ PROMPT set to '\U [\d] \r:\m \P>\_' lorentzca@localhost [(none)] 10:21 pm> PROMPT単体で実行すると、初期状態に戻るので、試しながら気に入ったプロンプト探すのがよさ気。 lorentzca@localhost [(none)] 10:21 pm> PROMPT Returning to default PROMPT of \N [\d]> MariaDB [(none)
2 min read
change database of ghost blog
ghost

change database of ghost blog

最初に書いておくと、一番楽チンでダウンタイムも少ないであろう、 sqliteからデータをダンプして、mysqlのダンプに変換する方法は諦めたorz SQLiteからMySQLへデータのマイグレーション(変換)|DB|ブログ|ノノログで紹介されていたPythonのスクリプトを使ってみたんだけど、だめだった ※ ちなみにghostのdbはデフォルトでsqlite3を使っていて、ghost/content/data/ghost.dbにある ghostには記事や設定のエクスポート機能があるので、この機能を使う 流れは以下 1. 記事をエクスポートする 2. ghostの設定をmysqlを使うように書き換えてghost再起動 3. まっさらなghostにエクスポートしたファイルをインポート 当然ghost再起動した段階で初期状態になってしまうのでダウンタイムになるけどまあ個人ブログだし妥協 設定の書き換え ghost/config.jsを以下のように修正(元の設定をコメントアウトしてmysqlの設定を追加している) production: { ..
1 min read