Mac の最新のmacOS Mojave に mysql8.0.x をインストールしてみます。
動作確認として Mojave のデフォルトのApache,Php にて、
http://localhost から PDO経由でアクセスします。
インストールするMySQLのバージョン
MySQL Community Server 8.0.16よりダウンロードします。
補足:「homebrew」よりインストールすると mysql 8.0.16 がインストールされます。「2019年7月の時点」
mySQL8のインストール
ダウンロードした「mysql-8.0.16-macos10.14-x86_64.dmg」をクリックしインストールを開始します。
mysql5.7系はインストーラーがランダムなパスワードを作成しログからそのパスワードを取得して・・・という作業がありましたが、インストール時にrootパスワードを設定することができます。
インストールが完了しました。
mySQL8のインストール先等の確認
システム環境設定 > MySQL をクリックしてMySQL環境設置を開く
mySQLのソケットの確認、mysqlへのパスの設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// インストールした mysqlのソケットを確認 $ mysql_config --socket /tmp/mysql.sock // デフォルトでインストールされているphpの設定でソケットの確認 $ php -i | grep 'mysqli.default_socket' mysqli.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock // soketの関連ずけをする。 $ sudo mkdir /var/mysql $ sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock<br> // .bash_profile の修正 $vi ~/.bash_profile ・ ・ export PATH="/usr/local/mysql/bin:$PATH" // 環境変数を更新します。 $ source ~/.bashrc |
ユーザー、権限、データベース作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
// rootユーザーでログイン $ mysql -u root -p Enter password: // <- インストール時に登録したパスワードを入力 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 18 Server version: 8.0.16 MySQL Community Server - GPL Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. // ユーザー及び権限の作成、テスト用のデータベース作成 // mysql8.0.xより grantでユーザー作成ができなくなったようです。 // 一旦、create user でユーザーを作成してから権限の編集をするようです。 mysql> create user 'dbuser'@'localhost' identified by 'xxxxxxxxxx'; mysql> grant all on *.* to 'dbuser'@'localhost' with grant option; mysql> create database test_db; mysql> quit Bye $ // 一度mysqlを quit して再度 dbuser でログインします。 $ mysql -u dbuser -p Enter password: // <- create user で登録したパスワードを入力 ・ ・ mysql> show databases; +--------------------+ | Database | +--------------------+ | test_db | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.16 | +-----------+ 1 row in set (0.00 sec) |
ホームディレクトリーのphpファイルでmysql8に接続の確認をする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> table{ margin:0 auto; border-radius:10px; -webkit-border-radius:10px; -moz-border-radius:10px; border:1px solid #666; border-spacing: 0; overflow:hidden; } td,th{ border-bottom:1px solid #666; } td,th{ padding:10px; } th{ background:#EFEFEF; } table tbody tr:last-child th, table tbody tr:last-child td{ border-bottom: none; } th + th,td{ border-left:1px solid #666; } </style> </head> <body> <?php define('DB_USERNAME', 'dbuser'); define('DB_PASSWORD', 'xxxxxxxxxxxxxxxx'); define('PDO_DSN', 'mysql:dbhost=localhost;dbname=test_db;charset=utf8;unix_socket=/tmp/mysql.sock'); try { $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $db->query("select Host, User from mysql.user;"); $users = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "<table><tr><th>Host</th><th>User</th></tr>\n"; foreach( $users as $user ){ echo "<tr><td>{$user[Host]}</td><td>{$user[User]}</td></tr>"; } echo "</table>"; $db = null; } catch (PDOException $e) { echo $e->getMessage(); exit; } ?> </body> </html> |
http://localhost/~[ユーザー]/index.php
でアクセスしてエラーが発生しないのを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 |
// ターミナルでの実行結果 mysql> select Host, User from mysql.user; +-----------+------------------+ | Host | User | +-----------+------------------+ | localhost | dbuser | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+------------------+ 5 rows in set (0.00 sec) |
http://localhost/ での表示結果のキャプチャー画像
補足: Homebrew よりインストール
1 2 3 4 5 6 7 8 9 10 11 |
// Homebrew よりインストール $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" $ brew update $ brew --version Homebrew 2.1.8 $ brew install mysql $ mysql -V mysql Ver 8.0.16 for osx10.14 on x86_64 (Homebrew) // mysql 起動 $ mysql.server start |
1 2 3 4 5 6 7 8 9 10 |
// my.cnfの編集 $ vi /usr/local/etc/my.cnf # Default Homebrew MySQL server config [mysqld] # Only allow connections from localhost bind-address = 127.0.0.1 // 以下に追加 character-set-server=utf8 default_authentication_plugin=mysql_native_password |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 初期設定 $ mysql_secure_installation Press y|Y for Yes, any other key for No: y Change the password for root ? ((Press y|Y for Yes, any other key for No) : y New password: // xxxxxxxxxxxxxx Re-enter new password: // xxxxxxxxxxxxxx Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done! // mysql 再起動 $ mysql.server restart |