SIerからWeb系に転職したやつの日記

タイトルの通り大手SIerからWeb系に転職した、世間一般的には変な奴のブログです。技術的な成長記録を書いていこうと思います。筆者とともに成長するブログです。今は初心者のような内容しか書いてませんが、そのうち上級者のようなブログになってるはずです。

MySqlインストール直後にroot以外でログインできない

前回の記事でデスクトップ版ubuntuLAMPを導入してサーバ化を進めちゃおうってことで、
PHP、apache2、MySqlを入れることに成功したのですが、
MySqlLinuxのユーザではアクセスできないことが判明したため、これを乗り越えるべく行ったことをまとめます。

↓前回の記事
regpon.hatenablog.com


まずはrootユーザでmysqlにログインします。

$ mysql -u root -p

f:id:regponpon:20180121043601p:plain

ログインに成功するとこんな感じでコンソールの表示が変わり、MySqlのモードになります。
あ、前回確認できなかったMySqlのバージョンはここで確認できましたねw

あと、コマンドの説明ですが、{-u [ユーザ名]}でログインしたいユーザ名を指定します。
MySqlインストール時に自動でrootユーザはつくられ、パスワードをその際に設定していたら、-pオプションを記載してあげると実行後にパスワードを聞いてくれます。

次にこのMySql上にどんなユーザがいるのか以下のクエリで確認します。

mysql > SELECT host, user FROM mysql.user;

f:id:regponpon:20180121044254p:plain

あーやっぱりregponは登録されていませんね。

なのでregponでも使えるようにしちゃいましょう。

まずはユーザの作成をするので、CREATE文の作成と実行です。

mysql > CREATE USER '{username}'@"{from_domain(ipaddress)}" IDENTIFIED BY "{password}";


パスワードは設定してもしなくても今回はどっちでもよかったのですが、一応設定しておきます。
(実際の業務だとパスワードあるに決まっていて、-pの存在を忘れてしまわないようにするためです笑)

私の場合だとクエリはこのような感じで実行しました。
f:id:regponpon:20180121044921p:plain

これでもう一度ユーザの一覧を確認してみると、

f:id:regponpon:20180121051732p:plain

このようにregponが追加されました!

しかしこのままだと何も権限を与えられていないかわいそうなユーザですので権限の設定をしていきます。

権限の設定はどのデータベースに対して、どのような権限を与えるのかを設定できます。
現状データベースは作成していないので、mysqlというシステム管理者が基本的に扱うデータベースに権限を付与しちゃおうと思います。
mysqlという名前のデータベースは最初から作られており、今回確認したユーザテーブルなどを持っているデータベースです。
今後、Webアプリ開発で用いるデータベースを作成したいと思います。

mysql > GRANT {権限} ON {対象データベース}.{対象テーブル} TO {対象ユーザー};

この権限に入るものは

  • all / ALL PRIVIREGES 全ての権限を与える
  • create テーブルを作成する権限を付与する
  • alter テーブルを変更する権限を付与する
  • drop テーブルを削除する権限を付与する
  • index インデックスを作成/削除する権限を付与する
  • select,update,insertなど 各テーブル操作の権限を付与する

のような水準で分かれています。
f:id:regponpon:20180121051829p:plain
今回はregponにallを付与します。



これで成功です。

あとはexitしてBye言われておきます。(MySqlから抜けて通常のシェルに戻るということです)

これでもうrootを使わなくてもこのLinuxユーザ(regpon@ubuntu)でログインできます。
※なぜMySqlのユーザ登録でregpon@ubuntuではなくregpon@localhostにしたかというと、
 ubuntuはマシン名であってTCP/IP用の名前でないためです。
 マシン名を使う場合は自身が名前解決のできるドメインに参加し、{~@マシン名.ドメイン名}とする必要があるのですが、
 そもそも自端末の話なので基本的にはlocalhostと記載します(IPアドレスにするなら127.0.0.1です。localhostと意味は一緒で、ループバックデバイスと呼ばれます。)
 ちなみにローカルホストの逆はリモートホストで自分以外のマシンです。
 って説明でたぶん大体あってると思います・・・。

長くなりましたが、regponでログインしてみます。

f:id:regponpon:20180121051202p:plain

はい、できましたね。
めでたしめでたし。

次はOS周りか、apacheについてにしようかな。