こんにちは〜
今日もメモです。
macでmysqlを使う場合は、homebrewで扱えてしまうので、こちらを使っていきたいと思います。
で、その際に使いそうなことなどをメモ
インストール
インストールしないと始まらないので、まずはインストール
% brew install mysql
ちなみにmysqlの後ろに@X.Xという形でバージョン指定も出来るようです。やってないけど。
バージョン確認
% mysql --version
mysql Ver 8.0.19 for osx10.15 on x86_64 (Homebrew)
上の1行だけです。簡単です。
バージョン指定してないので、現時点では8.0.19が最新なのかな?
サーバーの起動・停止
ここで少しややこしい話が出てきます。
「サーバーの起動・停止」と「mysqlのログイン・ログアウト」
それぞれの動作自体は言葉通りですが、
「サーバーの起動」をしないとmysqlにはログイン出来ないし、
「サーバーの起動」だけしてもログインしないとデータベースにはアクセス出来ません。
なので、今どちらをやろうとしているのか、頭の中でぐちゃぐちゃにならないようにしましょう。(自分への戒め)
・・・で、これは「サーバーの起動」です。
% mysql.server start
サーバーを停止させるときは、
% mysql.server stop
で止めることができます。
なお、サーバーを起動することになるので、つけっぱなしにしておくとそれなりにCPUを使いますので、 必要な時につけたり消したりする方がいいのかなぁと。
(アクティビティモニタ見てると0.6%くらい?)
mysqlのログイン・ログアウト
ルートユーザーでログインする場合
% mysql -u root
自分で作ったアカウントでログインする場合
% mysql -u xxxx -p
・・・とまぁ2通り書きましたが、どちらも同じです。-pをつけるとパスワードを求められます。
パスワード有りのアカウントでは-pなしではアクセスできないようです。
ログアウトする場合
mysql> quit
mysql> \q
mysql> exit
のいづれかを使います。(どれでもいいみたい)
この先、mysql>から始まるコードは、全てログイン中のコードです。
ユーザーアカウントの作成・削除
作成
mysql> create user 'xxxx'@localhost identified by 'password';
xxxxにユーザー名、passwordにパスワードを入力します。
ちなみに@の後ろのlocalhostはサーバー名をいれるところみたいですが、特に設定を変更してないならlocalhostじゃないですかね。
削除
mysql> drop user 'xxxx'@localhost;
特にパスワードを求められることもなく消え去るので、間違えてないか確認はしましょう。
アカウントの確認
現在のサーバーに存在しているアカウント名を一覧で表示します。
mysql> select user, host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
4 rows in set (0.01 sec)
何か知らない子がたくさん。。。
アカウントの権限
確認
mysql> show grants for "xxxx"@localhost ;
出力結果の見方や、権限の変更についてはこちらが参考になりそう。
2020/06/22追記:
データベースへのアクセス権限を追加する時に上記だとイマイチ分からなかったので、別で調べてみた。
mysql> GRANT ALL PRIVILEGES ON xxxxxxxx.* TO xxxx@localhost;
xxxxxxxxにはデータベース名、xxxxにはユーザー名を記述。
上記をrootアカウントで実行すると行ける。
参考サイト:MySQL のデータベースユーザーとデータベースアクセス権限
ちなみにPRIVILEGESを翻訳すると「特権」なので、もしかしたら少し違うかもしれないけど、ローカルテストだしいいや。。
データベースの操作
データベースの作成
mysql> create database xxxxxxxx;
xxxxxxxxにはデータベース名を記述。
データベースの削除
mysql> drop database xxxxxxxx;
基本的に作成がcreateで削除がdropと覚えておけば何となく全部行けそう?
データベースの確認
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.04 sec)
これまた知らない子がたくさん。。。下手に消すとヤバそう(特にinformation_schemaはレンタルサーバーのmysqlでも入ってるし)
データベースに入る
mysql> use xxxxxxxx;
「Database changed」
チェンジ・・・?元々どこかのデータベースには入っていたということ?
(※後に出てくるshow tableをしたらエラーが起きたので、入ってはいないそうです)
テーブル操作
テーブルの作成
mysql> CREATE TABLE `xxxxxxxx`.`table_name` ( `A_I` INT NOT NULL AUTO_INCREMENT , PRIMARY KEY (`A_I`)) ENGINE = InnoDB;
唐突に長くなったので、少し説明を。
xxxxxxxx > データベース名
table_name > テーブル名
A_I > column名。テーブルには1つ以上のcolumnがないと生成できないらしい。
INT > columnの型
NOT NULL > null値は含まない
AUTO_INCREMENT > オートインクリメント。詳細は調べて欲しい。
PRIMARY KEY (A_I
) > primary keyをA_I(column名)に指定。
ENGINE = InnoDB > データベースエンジンをInnoDBに指定。
と、こんな感じです。まぁいつもオートインクリメント入れるのでこんな長くなりましたが、使わない人はそこまで描かないですよね(笑)
テーブルの削除
mysql> drop table `table_name`;
ちなみにmysqlはシングルクォートではなくバッククォート(shift+@?らへんにあるやつ)なので注意。ハイフンなどの特殊文字を使ってない場合は無くてもいい。
テーブルの一覧表示
mysql> show tables;
テーブルの詳細表示
mysql> desc `table_name`;
+-------+------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+----------------+
| A_I | int | NO | PRI | NULL | auto_increment |
+-------+------+------+-----+---------+----------------+
1 row in set (0.02 sec)
こんな感じの詳細が見れる。
columnの追加
mysql> ALTER TABLE `table_name` ADD `column_name` INT NOT NULL AFTER `A_I`;
AFTERで指定されたcolumnの後ろに追加される
ちなみに2つ以上増やす場合は、ADD以降をそのままコンマ繋ぎで増やしていく。
この時、AFTERは、1つ前に追加するcolumn_nameにしないと、想定した並び順にならないので注意。
columnの削除
alter table `table_name` drop `column_name`;
データベース名を取得する
2020/06/22 追記
mysql> show variables like 'hostname';
参考サイト:mysqlで接続しているDBサーバのホスト名を確認する方法
終わりに
追加があれば追加していきます。
ちなみに、本番環境の場合は、セキュリティの面の設定がさらに必要なので、その辺は注意です。
あとレンタルサーバー借りててphpmyadmin使える人、SQLのプレビューというのを押すとどういう風に記述すればいいか何となくわかると思うよ〜 (権限の都合上テーブル操作くらいしか出来ないけど)
では、またね〜
参考サイト
↓もしこの記事が参考になったら、下のいいねボタンを押していただけると非常に助かります!(ログイン不要)↓