MySqlインストール直後にroot以外でログインできない
前回の記事でデスクトップ版ubuntuにLAMPを導入してサーバ化を進めちゃおうってことで、
PHP、apache2、MySqlを入れることに成功したのですが、
MySqlにLinuxのユーザではアクセスできないことが判明したため、これを乗り越えるべく行ったことをまとめます。
↓前回の記事
regpon.hatenablog.com
まずはrootユーザでmysqlにログインします。
$ mysql -u root -p
ログインに成功するとこんな感じでコンソールの表示が変わり、MySqlのモードになります。
あ、前回確認できなかったMySqlのバージョンはここで確認できましたねw
あと、コマンドの説明ですが、{-u [ユーザ名]}でログインしたいユーザ名を指定します。
MySqlインストール時に自動でrootユーザはつくられ、パスワードをその際に設定していたら、-pオプションを記載してあげると実行後にパスワードを聞いてくれます。
次にこのMySql上にどんなユーザがいるのか以下のクエリで確認します。
mysql > SELECT host, user FROM mysql.user;
あーやっぱりregponは登録されていませんね。
なのでregponでも使えるようにしちゃいましょう。
まずはユーザの作成をするので、CREATE文の作成と実行です。
mysql > CREATE USER '{username}'@"{from_domain(ipaddress)}" IDENTIFIED BY "{password}";
パスワードは設定してもしなくても今回はどっちでもよかったのですが、一応設定しておきます。
(実際の業務だとパスワードあるに決まっていて、-pの存在を忘れてしまわないようにするためです笑)
私の場合だとクエリはこのような感じで実行しました。
これでもう一度ユーザの一覧を確認してみると、
このようにregponが追加されました!
しかしこのままだと何も権限を与えられていないかわいそうなユーザですので権限の設定をしていきます。
権限の設定はどのデータベースに対して、どのような権限を与えるのかを設定できます。
現状データベースは作成していないので、mysqlというシステム管理者が基本的に扱うデータベースに権限を付与しちゃおうと思います。
mysqlという名前のデータベースは最初から作られており、今回確認したユーザテーブルなどを持っているデータベースです。
今後、Webアプリ開発で用いるデータベースを作成したいと思います。
mysql > GRANT {権限} ON {対象データベース}.{対象テーブル} TO {対象ユーザー};
この権限に入るものは
- all / ALL PRIVIREGES 全ての権限を与える
- create テーブルを作成する権限を付与する
- alter テーブルを変更する権限を付与する
- drop テーブルを削除する権限を付与する
- index インデックスを作成/削除する権限を付与する
- select,update,insertなど 各テーブル操作の権限を付与する
のような水準で分かれています。
今回は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でログインしてみます。
はい、できましたね。
めでたしめでたし。
次はOS周りか、apacheについてにしようかな。