commandからmysqlの操作
[MYSQL 起動 コマンド]
dcm ps
1. 一旦mysql確認
cat docker-compose.yml
2. serviceを見る
dcm exec db sh
3. Docker-compose中のshellに接続します。
docker execと同じこと。
mysql -u「db_user_name(this is written in .env file))」 -p「(p stands for password)」
Enter password: (password)
4. mysqlをこのuser名前でこのpasswordで起動しますと言う意味
Use 「DBNAME」
Database changed
5. Use 「DBNAME」;
このDBに接続しますと言う意味
Show tables;
6. Shows list of tables in the database
database内のtableのリストを表示します
これでsqlコマンドなど全て書くことができます。
¥q(逆slash)
7. To get out from database
databaseから出ます。
Exit
8. Shellから出ます。
<その以外のコマンド>
Show grants / show grants for current_user;
-> 現在のuserの権限を見る
SQL文の例>
create table user (
-> id int not null auto_increment,
-> name varchar(20) not null,
-> constraint pk_example primary key(id)
-> );
insert into user(id, name) values(null, 'sample data');
mysql> insert into user values (null, 'happy_sample');
Query OK, 1 row affected (0.00 sec)
mysql> select * from user
-> ;
+----+--------------+
| id | name |
+----+--------------+
| 1 | sample data |
| 2 | happy_sample |
+----+--------------+
2 rows in set (0.00 sec)
mysql> insert into user values(1, 'number_err');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
いろんなSQL文を入れたりdropしたり試してみましたが、大体ORACLEのSQL文と似ていてました。
[MYSQLDUMPの活用]
一旦Shellの中でしなければならない。
mysqldump 「DBNAME」 -u 「USERNAME」 -p > dump.sql;
password: (password)
こうしたらSQL-format dump filesをexportすることができます。
cat dump.sql
//作成したdumpの内容確認
[今日の失敗のtodo]現在のローカルmysqlの中に、別のDBを作って、dumpしたデータで別のデータベースを作成してください。それを、tableplusで接続して、データの更新や、スキーマ変更をしてみてください。
mysql> create database [database_name];
Query OK, 1 row affected (0.00 sec)
mysql> create user '[username]'@'localhost' identified by '[password]';
Query OK, 0 rows affected (0.00 sec)
//これはNG。 routeと言うコマンドを入力してdockerがみるdatabaseのHOST IP ADDRESSを確認してlocalhostの代わりに正確に書きます。
mysql> grant all privileges on [database_name].* to 'username'@'ip_address';
Query OK, 0 rows affected, 1 warning (0.00 sec)
//usernameと言うuserにdatabaseの全体的な権限をくれます。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| database_name |
+--------------------+
確認したら成功的に作られました。でもここでtableplusからconnectしようとしたんですが、
エーラが出てきました。理由はまだ...