MySQLのインストールってどうやるんでしょうか。。状態からスタート。
#目的
AWSのEC2で作成したインスタンスにMySQLをインストールします。
ユーザを作成してCRUD権限を付与するテストも行います。
#環境
Centos7.5系
MySQL5系
macOS 10系
#MySQLのインストール
このサイトに倣って作業を行います。
インスタンスはAWS MarketplaceからCentOS7を選択し作成したのでmariaDBがデフォで存在、手順に則って削除しています。
rootユーザのpass設定まで実施しインストール完了。
以下は私の環境での作業ログです(rootユーザで作業しているのでsudoは不要)。
# rpm -qa | grep maria
mariadb-libs-5.5.56-2.el7.x86_64
# yum remove mariadb-libs
# rm -rf /var/lib/mysql
# rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# yum install --enablerepo=mysql57-community mysql-community-server
# mysqld --version
mysqld Ver 5.7.24 for Linux on x86_64 (MySQL Community Server (GPL))
# systemctl enable mysqld
# systemctl is-enabled mysqld ※自動起動の状態であるかを確認するコマンド
enabled
# systemctl start mysqld
# systemctl status mysqld
# grep 'temporary password' /var/log/mysqld.log
2018-11-07T05:09:56.133511Z 1 [Note] A temporary password is generated for root@localhost:パスワード
# mysql -uroot -p
Enter password:
mysql> alter user 'root'@'localhost' identified by 'MyNewPass4!';
mysql> select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
3 rows in set (0.00 sec)
#ユーザ作成、CRUD権限付与
mysql> create user ユーザ名 identified by 'パスワード';
今回作成したユーザは「特定データベースの全テーブルにCRUD権限を付与」だったので以下のコマンドを投入。権限の反映も行います。
mysql> grant select, insert, update, delete on `DB名`.* to 'ユーザ名'@'%';
mysql> flush privileges;
参考にしたサイト
https://www.karakaram.com/mysql-user-grant
https://qiita.com/FumiyaShibusawa/items/2e3b30ceedeafff0bce2
#所感
SQLってなんで大文字なの?をググったところ好みの回答がありましたので共有。
クックパッドの勉強会はエンジニアの方がとても能動的&出てくる食事がバリウマ(クックパッド専属シェフ?のお手製)と聞いています。自分の目的とマッチした際に参加してみたいですね。
#エラー(11/7追記)
久しぶりにインストール作業を行ったらエラーメッセージが。
Downloading packages:
Error downloading packages:
1:perl-Pod-Simple-3.28-4.el7.noarch: [Errno 5] [Errno 12] メモリを確保できません
〜省略〜
perl-Pod-Perldoc-3.20-4.el7.noarch: [Errno 5] [Errno 12] メモリを確保できません
メッセージそのままでEC2インスタンスのメモリ不足(t2.micro)かな?と思いt2.mediumにスケールアップしたらあっさり解決しました。
メモリを増加するんじゃなくてインスタンスタイプを変更する、って考えなんですね。
#使ったコマンド
・バージョン確認
mysql -V
・ログイン
mysql -u root(もしくはユーザ名) -p
・DB作成
create database データベース名
・DB一覧
show databases
・DBログイン
use データベース名
・ユーザの新規作成
create user ユーザ名 identified by 'パスワード'
・ユーザ権限の変更
grant select, insert, update, delete on `DB名`.* to 'ユーザ名'@'%'
・ユーザ権限の確認
show grants for 'ユーザ名'
・ユーザ一覧
select host,user from mysql.user
・テーブル一覧
show tables
・カラム一覧
desc テーブル名