MySQLの文字コードを設定する

MySQLで文字コードを設定する方法です。
■環境
MySQL 5.6.26

これからDBの作成をする場合は、設定ファイル「/etc/my.cnf」に追記することで
作成するDBの文字コードを設定できます。

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8

作成済みDBの文字コードを設定する場合は以下のコマンドを実行してください。

# mysql
mysql> ALTER DATABASE sample_db CHARACTER SET utf8;
mysql> SHOW CREATE DATABASE sample_db;

作成済みテーブルの文字コードを設定する場合は以下のコマンドを実行してください。

# mysql
【テーブルとカラム両方に設定する場合】mysql> ALTER TABLE sample_table CONVERT TO CHARACTER SET utf8;
【テーブルのみ設定する場合】mysql> ALTER TABLE sample_table charset=utf8;
mysql> SHOW CREATE TABLE sample_table;
Share

mysql系の関数がPHP7でエラーになる場合の対応

PHP5.XからPHP7にアップデートした際にmysql系の関数がエラーになっていたので、
その際に行なった対応をメモしておきます。

  1. 関数名を「mysql_xxxx()」から「mysqli_xxxx()」に変更する。
  2. 関数の引数が「第1引数:設定値」「第2引数:mysqlオブジェクト」である場合は
    順番を逆にする。(第1引数がmysqlオブジェクトとなるようにする)
    ※ここで言うmysqlオブジェクトとは、「mysqli_connect」の返却値の事です。
  3. mysqli_error()には、引数にmysqlオブジェクトを設定します。
    これ以外にも「mysql_xxxxx()」では引数不要であったものは「mysqli_xxxxx()」では引数に
    mysqlオブジェクトが必要になっているかもしれません。
Share

ダイジェスト認証の設定方法

Apacheで動いているWEBサーバにて、ダイジェスト認証を入れる方法です。
■環境
CentOS Linux release 7.2.1511 (Core)
Apache/2.4.6

Apacheがダイジェスト認証に対応しているか確認します。
以下のコマンドにて結果が出力されれば対応しています。

# grep digest /etc/httpd/conf.modules.d/ -r
conf.modules.d/00-base.conf:LoadModule auth_digest_module modules/mod_auth_digest.so

ダイジェスト認証用のIDとパスワードのセットを作成します。
下記の「Sample Auth」は認証名で「sampleuser」は設定するIDです。適宜書き換えてください。
また「/etc/httpd/conf/.hpass」が生成されるファイルですが、パスもファイル名も任意です。

# htdigest -c /etc/httpd/conf/.htpass ’Sample Auth' sampleuser
Adding password for sampleuser in realm Logical Dice Auth.
New password: ←設定するパスワードを入力する
Re-type new password: ←設定するパスワードを再度入力する

あとはApacheの設定ファイルにて設定をします。
以下の例では「/var/www/html/sample」配下のコンテンツにWEBブラウザにてアクセスした際に
ダイジェスト認証が表示されるようになります。
下記のAuthUserFileは上記で生成したファイルを指定してください。

<Location "/sample/">
   AuthType Digest
   AuthName “Sample Auth"
   AuthUserFile "/etc/httpd/conf/.htpass"
   Require valid-user
</Location>

これでApacheの設定ファイル再読み込み(再起動)をすればダイジェスト認証がかかるようになります。

Share