MySQL

5.5.6 あたりから Timestamp がデフォルトで NOT NULL になった。

Launch

mysql.server start

User

Create

CREATE USER developer@'%' identified by 'password';
  • Create User for select only and being required SSL connection

      GRANT SELECT ON db_name.* TO 'user_name'@'%' REQUIRE SSL;
      SET PASSWORD for user_name = PASSWORD('password_characters');
    

Privilege

GRANT ALL PRIVILEGES ON db_name.* TO developer@'%';

The server requested authentication method unknown to the client

認証プラグイン

  • MySQL5.7までの認証プラグイン
    • mysql_native_password がデフォルト
  • MySQL8.0より
    • caching_sha2_password。 SHA-256を使用した、より安全なパスワードの暗号化を提供するとともに、キャッシュを使用して同一ユーザの認証処理を高速化
create user developer@localhost identified by 'developer';
create user developer@localhost identified mysql_native_password by 'developer';
alter user developer@localhost identified mysql_native_password by 'developer';
GRANT ALL PRIVILEGES ON database_name.* TO 'developer'@'localhost';

Text columns

  • CHAR:255Bまでの固定長文字列
  • VARCHAR:64KBまでの可変長文字列
  • TINYTEXT:255Bまでの可変長文字列
  • TEXT:64KBまでの可変長文字列
  • MEDIUMTEXT:約1.6MBまでの可変長文字列
  • LONGTEXT:約4.3GBまでの可変長文字列

参考: 【Rails】db:migrateでMySQLのLONGTEXT、MEDIUMTEXTを使う

Rails でマイグレーションする際には、 :limit の値によって column type を指定する。

PHP による接続確認

$connect = true;
$host = 'host';
$db_name = 'db_name';
$user = 'user';
$password = 'password';
$message = '';
try {
  $dbh = new PDO("mysql:host=$host;dbname=$db_name;charset=utf8", $user, $password);
} catch (PDOException $e) {
  $connect = false;
  exit('Database connection failure ' .$e->getMessage());
  $message .= 'Database connection failure ' .$e->getMessage() .'';
}
if ($connect) {
  $message .= 'Database connection success!';
}
$dbh = null;
echo $message;