20200619のMySQLに関する記事は3件です。

【Amazon Linux2】MySQL5.7の初期化

MySQLの削除

#停止
sudo service mysqld stop

#停止したか確認
sudo service mysqld status

#インストール済みのMySQLの確認
 パッケージ管理コマンドのrpmでインストール済みのmysqlを探す。
 オプションのqがパッケージ情報の表示と検索、aがインストールされているパッケージを一覧表示する。
 それを、grepで絞り込んでいる。
rpm -qa | grep -i mysql
mysql-community-common-5.7.30-1.el7.x86_64
mysql57-community-release-el7-11.noarch
mysql-community-libs-5.7.30-1.el7.x86_64
mysql-community-server-5.7.30-1.el7.x86_64
mysql-community-client-5.7.30-1.el7.x86_64

#MySQLの削除
sudo yum remove mysql-community-common-5.7.30-1.el7.x86_64
sudo yum remove mysql57-community-release-el7-11.noarch
sudo yum remove mysql-community-libs-5.7.30-1.el7.x86_64
sudo yum remove mysql-community-server-5.7.30-1.el7.x86_64
sudo yum remove mysql-community-client-5.7.30-1.el7.x86_64

#または、一気に削除
sudo yum remove mysql

#データベースの削除
sudo rm -rf /var/lib/mysql

mysqlの初期化

sudo mysqld --initialize --user=mysql
[ERROR] --initialize specified but the data directory has files in it. Aborting.
[ERROR] Aborting

しかしエラーが発生。
https://hirose31.hatenablog.jp/entry/20161004/1475582156
こちらの記事を参考にし、エラーを解消。MySQLの初期化が完了。

次にmysql -u root -pでログインしようとするとエラーが発生。

$ mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

MySQLの初期化後、初期パスワードが発行されるので確認する。

# 初期パスワードを確認
$ sudo cat /var/log/mysqld.log | grep 'temporary password'  # 初期パスワードを確認

# rootユーザのパスワードなどを変更するため、次のコマンドで変更を行っていく。
$ mysql_secure_installation

# 新しく設定したパスワードでログインが完了。
$ mysql -u root -p
Enter password: # 設定したパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
〜〜

◯参考サイト
https://qiita.com/ksugawara61/items/336ffab798e05cae4afc#4-mysql%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D

mysql2のgemをアンインストールし、再度インストールした。

gem uninstall mysql2
gem install mysql2

インストールの際エラーが発生したが、「mysql-devel」をインストールすると無事通った。

sudo yum install mysql-devel

DBをcreateし、migrateを実行。

rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Amazon Linux2】MySQL5.7の初期化、環境構築

MySQLの削除

#停止
sudo service mysqld stop

#停止したか確認
sudo service mysqld status

#インストール済みのMySQLの確認
 パッケージ管理コマンドのrpmでインストール済みのmysqlを探す。
 オプションのqがパッケージ情報の表示と検索、aがインストールされているパッケージを一覧表示する。
 それを、grepで絞り込んでいる。
rpm -qa | grep -i mysql
mysql-community-common-5.7.30-1.el7.x86_64
mysql57-community-release-el7-11.noarch
mysql-community-libs-5.7.30-1.el7.x86_64
mysql-community-server-5.7.30-1.el7.x86_64
mysql-community-client-5.7.30-1.el7.x86_64

#MySQLの削除
sudo yum remove mysql-community-common-5.7.30-1.el7.x86_64
sudo yum remove mysql57-community-release-el7-11.noarch
sudo yum remove mysql-community-libs-5.7.30-1.el7.x86_64
sudo yum remove mysql-community-server-5.7.30-1.el7.x86_64
sudo yum remove mysql-community-client-5.7.30-1.el7.x86_64

#または、一気に削除
sudo yum remove mysql

#データベースの削除
sudo rm -rf /var/lib/mysql

MySQL5.7のインストール

◯参考サイト
https://qiita.com/2no553/items/952dbb8df9a228195189

#mariadbがインストールされているか確認
$ yum list installed | grep mariadb
mariadb-libs.x86_64                   1:5.5.56-2.amzn2                 installed

#mysqlがインストールされているか確認
$ yum list installed | grep mysql

#mysqlがインストールできるか確認
$ yum info mysql
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
エラー: 表示するパッケージはありません

#mysql8.0リポジトリの追加(このリポジトリに5.7も含まれています)
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y

#mysql8.0リポジトリの無効化
$ sudo yum-config-manager --disable mysql80-community

#mysql5.7リポジトリの有効化
$ sudo yum-config-manager --enable mysql57-community

#mysql5.7がインストールできるか確認
$ yum info mysql-community-server

#mysqlインストール
$ sudo yum install mysql-community-server -y

#バージョンを確認
$ mysqld --version

mysqlの初期化

sudo mysqld --initialize --user=mysql
[ERROR] --initialize specified but the data directory has files in it. Aborting.
[ERROR] Aborting

しかしエラーが発生。
https://hirose31.hatenablog.jp/entry/20161004/1475582156
こちらの記事を参考にし、エラーを解消。MySQLの初期化が完了。

MySQLの初期化後、初期パスワードが発行されるので確認する。

次にmysql -u root -pでログインしようとするとエラーが発生。

$ mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

rootパスワードを再設定する。
※この時設定したrootパスワードが、DB_PASSWORDになる。

# 初期パスワードを確認
$ sudo cat /var/log/mysqld.log | grep 'temporary password'  # 初期パスワードを確認

# rootユーザのパスワードなどを変更するため、次のコマンドで変更を行っていく。
$ mysql_secure_installation

# 新しく設定したパスワードでログインが完了。
$ mysql -u root -p
Enter password: # 設定したパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
〜〜

◯参考サイト
https://qiita.com/ksugawara61/items/336ffab798e05cae4afc#4-mysql%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D

mysql2のgemをアンインストールし、再度インストールした。

gem uninstall mysql2
gem install mysql2

インストールの際エラーが発生したが、「mysql-devel」をインストールすると無事通った。

sudo yum install mysql-devel
gem install mysql2

DBをcreateし、migrateを実行。

rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production

rootでMySQLにログイン後、ユーザーを作成 → 権限の付与。

# rootユーザーでログイン
mysql -u root -p

# MySQLを選択
mysql> use mysql;

# ユーザーの作成
mysql> CREATE USER test@localhost IDENTIFIED BY ‘password’;

# ユーザーが追加されているか確認
mysql> SELECT  host, user FROM mysql.user;

# 新規ユーザーへ権限の付与
mysql> GRANT ALL PRIVILEGES ON *.* TO test@localhost;

# 権限の付与を反映させる
mysql> FLUSH PRIVILEGES;

# 権限が付与されたか確認する
mysql> show grants for test@localhost;

# rootユーザーをログアウト後、作成したユーザーでログインできるか確認する
mysql> quit

sudo service mysqld stop
sudo service mysqld start # MySQLの再起動

mysql -u test -p
Enter password: 新規ユーザー作成時に入力したパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
〜〜

最後にunicornを再起動させ、MySQLをの設定を反映させる。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SQLSTATE[HY000] [1045] Access denied for user エラー

http://localhost:8888にアクセスし、MySQKのデータをlaravelのDBクラスを使って表示するときにでたエラー

実際に出たエラー

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (SQL: select * from information_schema.tables where table_schema = laravel-project and table_name = migrations and table_type = 'BASE TABLE')

エラーを出してしまった理由

ターミナル からアクセスしていたmysqlのsocketが必要なのにphpmyadminのsocketを.envのDB_SOCKETに記述してしまっていた。

解決した方法

mysqlコマンドの\sでサーバー情報を表示してsocketを.envのDB_SOCKETにコピーし、
ターミナルに戻り、(一度設定した.envを再編集した場合は)キャッシュをクリアにする
$ php artisan config:cache

参考サイト

MySQLサーバー情報取得
https://phpjavascriptroom.com/?t=mysql&p=info

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む