2023年02月21日
今回Laravelというわけではないのですが、MySQLを使うに当たっていろいろ確認しながら進めたいのでphpMyAdminを導入します。ほんとうはターミナルでできるといいのですが、さすがにそろそろちゃんとLaravelの開発したいので、今回は一旦これでごまかします。
というかそもそもubuntuインストールしてphpインストールしてNginxインストールしたけどmysqlってインストールできてるのだろうか…?一回確認してみましょう。
mysql -u[ユーザー名] -h[ホスト名] -p
これで接続できます。
あ…やっぱりインストールされてない…どちらにしてもマイグレーションファイルを作る時にエラー出てましたね。踏みとどまってよかった。ローカルでもやりましたもんね。
準備することがたくさんで心が折れそうです。ただサーバー構築が自分でできると後々いろいろなライブラリをすきなように使えるのでがんばります。pdfを作成するライブラリなんかも普通ならfpdfとかしかないけど、自分でインストールできると別の便利なやつがあったりした気がします。業務用システム作るなら必須な気がしますよね。
$ sudo apt install mysql-server
これでインストールできるはず。318MB使うが大丈夫かだと。けっこう容量食いますね…
次にセキュリティ対策のためのスクリプトを実行します。
$ sudo mysql_secure_installation
セキュアにmysqlをデプロイしますその後パスワードなどを決めて、みたいな感じか?
そのセキュリティの強度を選べみたいな感じ?2を選ぶとパスワードの長さは8文字以上で大文字、小文字、数字、特殊文字を使わないといけないみたいですね。
パスワードを設定してみるものの何回やってもこの表示が出る。なにこれ?不具合?
原因は調べてもよくわからないのですが、一旦セキュアインストールは終了して別のコマンドを入力します。Ctrol+Cで終了し、
sudo mysql -u root -p
を入力すれば、さきほど入力したパスワードを入力すれば、
普通にmysqlにログインできました。なんだったんだろう…
こちらのページでmysqlのSQL以外のコマンドがよくわかったので遊んでみましょう。
今回はとりあえず、mysql> exit
で終了してphpMyAdminをインストールします。
次にphpMyAdminをインストールします。
$ sudo apt install phpmyadmin
このコマンドを入力します。
インストールがスタートしてこの画面が出ます。apacheなら上を選択して実行するのですが、今回はNginxなのでチェック入れずOKします。
次にphpMyAdminのログインパスワードを設定します。2回同じパスワードを入力します。パスワードが弱いみたいなエラーが出ますが続行できそうですね。このままやっちゃいます。キャプチャ画像は撮り損ねましたが、ignoreを選択すれば続行できました。
インストール先は/usr/share/phpmyadmin
です。
できてますね。ウェブルートからアクセスするためにウェブルートにシンボリックリンクを貼ります。
$ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
そういえばインデックスをlaravelプロジェクトのpublicになるようにしていたのでpublicのほうにphpmyadminのシンボリックリンクを貼らないとだめですね。それで実行し直しました。
これでhttp://xxx.xxx/phpmyadminにアクセスすると…
ちゃんと表示されました。こんなにスムーズに表示できるとは…笑
このあとrootでログインしようとしたら失敗しました。必死すぎてキャプチャ撮るの忘れてたのですが、
「設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました。」
というエラーと
mysqli::real_connect(): (HY000/1045): Access denied for user root@’localhost’ (using password: YES)
このエラーが出てました。エラー内容で調べてみるとphpmyadminの設定ファイルのログイン情報を変えないといけないみたいです。
/etc/phpmyadmin/config.inc.php
設定ファイルはこれで、ユーザー名とパスワードはconfig-db.phpで変数に入れてるみたいなので、これを修正します。
するとユーザー名が「phpmyadmin」になってます。これがあってないのか?ということでこれを「root」に変更してアクセスしてみるとやっぱりエラー。パスワードが間違ってるのかと思い、sshでログインしてみるとちゃんとできる…どういうこと?
考えてみると、sshでログインするときはroot権限で(sudoをつけたコマンドで)ログインしてるので、phpmyadminだとユーザー権限になってしまうからアクセス拒否されているのかも。
試しにconfigファイルの通りにsshで「phpmyadmin」というユーザーを作ってみました。
sshでmysqlにログインしてユーザー作成のコマンドを入力します。
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'password';
passwordのところはconfigファイル内にあったパスワードでもいいし、新しいものにしても大丈夫です。変えた場合はconfigファイルのパスワードも変更してください。
GRANT ALL PRIVILEGES ON * . * TO 'phpmyadmin'@'localhost';
このコマンドでデータベース権限も変更できます。今回はそこまでしなかったような…
このあと、phpMyAdminで作ったユーザーでアクセスしてみると…
ログインできました!たぶん原因は思った通りかな…?
スポンサーリンクやっとできました。インストールするときについでにユーザーまで作ってくれればいいのに。
root権限でインストールしてなかったのだろうか。いやそんなわけないか…
データベースとユーザーができたので次はLaravelで設定してマイグレーションファイルが作成できそうですね。
お仕事のご依頼やご相談、弊社サービス内容に関してなど、お気軽にご相談ください。