20200316のMySQLに関する記事は8件です。

【MySQL】プログラミング初心者が今まで遭遇したエラーとその解決方法のメモ

こんばんは!スージーです!
なかなか技術ブログが書けずにモヤモヤしていたので、ちょうど良いネタがあり備忘録も兼ねて。

MySQLに接続できないエラー

私は度々、MySQLに接続できずに四苦八苦しています。pidファイルないよーとかsocketないよーとか、その度に過去のメモや参考記事をあちこち探しているのでまとめてみようと思います。

参考

【遭遇率第1位】

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

原因:
ざっくり言うとmysql.sockファイルが存在しないから作ってね
解決策:
/tmp直下にmysql.sockを作る

mysql.sockファイルがあるか確認
~ $cd /tmp
tmp $ ls
mysql.sockがない

tmp $ sudo touch mysql.sock
tmp $ cd
~ $ sudo mysql.server start
ERROR!~~~

startできずエラー発生したら
権限の書き換え(chownでファイルやディレクトリの所有者と所属グループを変更する)
~ $ sudo chown username /tmp/mysql.sock
もしくは権限付与
~ $ sudo chmod 777 /tmp/mysql.sock

もう一度mysql起動
~ $ sudo mysql.server start
...SUCCESS!

mysql.sockファイルの作り方は色々あると思いますが、私はこのエラーが起きた時はtouchコマンドで/tmp/ファイル直下にmysql.sockファイルを直接作ってしまいます。socketファイル作成しても権限がないと怒られる事もあるのでその時はchownコマンドかchmodコマンドで権限の書き換えか権限付与してあげて下さい。

【遭遇率第2位】

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)

原因:
ざっくり言うとpidファイルが存在しないから作ってね
解決策:
/usr/local/var/mysql/直下にlocal.pidファイルを作る


~ $ sudo mysql.server start
Starting MySQL
… ERROR! server quit updating PID file(/usr/local/var/mysql/usernoMacBook-ea.local.pid)

pidファイルがあるか確認してみる
~ $ cd /usr/local/var/mysql
mysql $ ls
usernoMacBook-ea.local.pidがない

mysql $ sudo touch usernoMacBook-ea.local.pid
mysql $ cd
~ $ sudo mysql.server start
...ERROR!~~/usr/local/var/mysql/username.local.err: Permission denied
権限ないよと怒られたら先ほどのエラーと同様に権限の書き換え(chownでファイルやディレクトリの所有者と所属グループを変更する)
~ $ sudo chown /usr/local/var/mysql/usernoMacBook-ea.local.pid
もしくは権限付与
~ $ sudo chmod 777 /usr/local/var/mysql/usernoMacBook-ea.local.pid

もう一度起動してみる
~ $ sudo mysql.server start
...SUCCESS!

先ほどと同様にやり方は色々あると思いますが、pidファイルもtouchコマンドで作ってあげましょう。mysql.sockのエラーと同様に権限ないよって怒られたら権限の書き換えか権限付与してあげましょう。

ここまでのまとめ

ここまで紹介したmysql.sockないよ、~.local.pidないよ、権限ないよ、がMySQL関連エラーの大半を占めていると思います。「/tmpディレクトリってどこ!?」とか「/usrディレクトリなんて知らないよ」って最初は思いましたが、まずはファイルが無い事を確認する為にcdコマンドで該当ディレクトリまで潜って見てみましょう。

【遭遇率第3位】

mysql立ち上がった!と思ったらsafeモードのプロセスが既に存在してますよっていうエラー

原因:
既にMySQLのプロセスが動いている
解決法:
processをkillする

~ $ sudo mysql.server start
Starting MySQL
 SUCCESS! 
~ $ 200315 13:51:58 mysqld_safe A mysqld process already exists

動いているMySQLプロセスを確認してみる
~ $ ps aux| grep mysqld
user       98762  0.0 0.0 4268296  672 s004 S+  2:00PM  0:00.01 grep mysqld
user       98633  0.0 5.4 4929884 450652  ?? S   1:51PM  0:00.46 /usr/local/opt/mysql@5.6/bin/mysqld --basedir=/usr/local/opt/mysql@5.6 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql@5.6/lib/plugin --log-error=usernoMacBook-ea.local.err --pid-file= usernoMacBook-ea.local.pid
user       98536  0.0 0.0 4281052  1128  ?? S   1:51PM  0:00.03 /bin/sh /usr/local/opt/mysql@5.6/bin/mysqld_safe --datadir=/usr/local/var/mysql ←注目
mysqld_safeプロセスが動いている模様

プロセスをkillする
~ $ sudo kill -9 98536
Password:

一度mysqlを停止する
~ $ mysql.server stop
Shutting down MySQL
.. SUCCESS! 

もう一度MySQLを起動してみる
~ $ mysql.server start
Starting MySQL
. SUCCESS!

これはこの前初めて遭遇したエラーです。頻出エラーより遭遇確率は低いと感じますが、grepしてmysql_safeのプロセスが動いているか確認しましょう。mysql_safe以外のプロセスをkillしてもエラー解消しなかったので悪さしているmysql_safeを見つけてあげましょう。

【番外編】

過去に一度でも5.7を起動してしまうと、同じデータを使って5.6を起動すると今までの方法では解決できない場合がある。

この状況は過去に一度dockerでMySQL@5.7で起動した後に開発環境のMySQL@5.6を起動した時に起きた事があります。

この状況になったらMySQLをアンインストールする方法があります。ただし、開発環境で大切なデータがDBに残っている場合は何らかの方法で退避させてあげて下さい(退避方法は割愛します。実践した事ないです)。私は幸いにも開発環境に貴重なデータはないので躊躇無くアンインストールしました。

mysqlをアンインストールします
~ $ brew remove mysql
~ $ brew cleanup
以下のディレクトリ下にはmysql関連ファイルが作成されているので念の為、綺麗に削除しておきます
~ $ sudo rm -rf /usr/local/mysql
~ $ sudo rm -rf /Library/StartupItems/MYSQL
~ $ sudo rm -rf /Library/PreferencePanes/MySQL.prefPane
~ $ sudo rm -rf /Library/Receipts/mysql-.pkg
~ $ sudo rm -rf /usr/local/Cellar/mysql*
~ $ sudo rm -rf /usr/local/bin/mysql*
~ $ sudo rm -rf /usr/local/var/mysql*
~ $ sudo rm -rf /usr/local/etc/my.cnf
~ $ sudo rm -rf /usr/local/share/mysql*
~ $ sudo rm -rf /usr/local/opt/mysql*

最後にver5.6をインストール
~ $ brew install mysql@5.6

インストールが完了したらパス通す
$ echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.bash_profile

.bash_profileの変更を反映
$ source ~/.bash_profile

MySQLを起動
~ $ sudo mysql.server start
. SUCCESS!

アンインストールしても過去のmysqlファイルがなぜか残っている場合があるので面倒ですけど rmコマンドで該当該当ファイルを削除してあげます。完全にクリーンになったMySQLならちゃんと起動してくれます。

【番外編2】

rails new project-name -d mysql→ Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib (LoadError)

原因:
mysqlのライブラリーがロードできませんよ
対策:
mysql2をアンインストールしてbundle install

project-name $ bundle exec gem uninstall mysql2
project-name $ bundle install
.
..
...
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/akito/git/media/vendor/bundle/gems/mysql2-0.4.4/ext/mysql2
/Users/akito/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160929-55293-192vx35.rb extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql/5.7.14/lib
-----
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/akito/git/media/vendor/bundle/extensions/x86_64-darwin-15/2.3.0-static/mysql2-0.4.4/mkmf.log

current directory: /Users/akito/git/media/vendor/bundle/gems/mysql2-0.4.4/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/akito/git/media/vendor/bundle/gems/mysql2-0.4.4/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/akito/git/media/vendor/bundle/gems/mysql2-0.4.4 for inspection.
Results logged to
/Users/akito/git/media/vendor/bundle/extensions/x86_64-darwin-15/2.3.0-static/mysql2-0.4.4/gem_make.out

An error occurred while installing mysql2 (0.4.4), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.4'` succeeds before bundling.

盛大に怒られている...

以下の参考記事の通りにやってみます

RailsプロジェクトでMySQLがbundle installできなかった
https://qiita.com/akito19/items/e1dc54f907987e688cc0

project-name $ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
project-name $ bundle install 
.
..
...
Bundle complete! 18 Gemfile dependencies, 78 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
     run bundle exec spring binstub --all
* bin/rake: Spring inserted
* bin/rails: Spring inserted
正常にbundle install完了したみたい

project-name $ rails db:create
Created database ‘project-name_development’
Created database ‘ project-name_test’
project-name $ rails db:migrate
project-name $ rails s
=> Booting Puma
=> Rails 5.2.4.1 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.4 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
きたきたきたーーーー!!!!

localhost:3000にアクセスすればいつものrails初期画面が表示されます。MySQLエラーのドツボにハマってrails sでサーバ起動できた時は快感ですね。

【忘れがちなコマンド覚書き】

sudo mysql.server start

→MySQLを立ち上げます

sudo mysql.server stop

→MySQLを停止します

sudo mysql.server restart

→MySQLをstop&startします

sudo mysql.server status

→MySQLの状態を確認します

ps aux| grep mysqld

→MySQLのプロセスを探します

まとめ

以上、私が遭遇したMySQLエラーのまとめでした。自分で何度も遭遇して解決しているうちに遭遇するパターンが同じだったので一覧で見れるようにしておけば後から振り返る時に便利だなと思い久々にQiitaを書いてみました。今回は初めてipadでこの記事を全部書いてみましたが、以外と快適に書けたのでipadとsmart keybord買った甲斐がありました。

終わり

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

【MySQL】Geometry型を使って地点間の距離を求める

はじめに

前回の記事ではGeometry型を使ったテーブルを作った後、データの登録と簡単な検索をした所で終わっていました。
今回はGeometry型を活用して、地点間の距離を求めたいと思います。

使用した環境

前回の記事と同一の環境となります。

  • OS
    • CentOS7.7(1908)
  • RDBMS
    • MySQL8.0.19

使用したデータ

前回の記事で作成したテーブルデータを利用しました。

指定した地点間の距離を求めるSQL

  • 以下のSQLでは、ST_Distance関数を使って2点間の距離を求めています。
  • ST_Distance関数とよく似た名称のST_Distance_Sphere関数がありますが、リファレンスマニュアルには「一般的な用途の距離計算にはST_Distance関数を参照してください」と書いてあるので、一般的な用途ではST_Distanceを使えば良さそうです。
SQL
SELECT
  CONCAT(st1.name, '-', st2.name) AS 区間,
  ST_Distance(st1.location, st2.location) AS '距離(m)'
FROM
  station AS st1,
  station AS st2
WHERE
  st1.name = '東京'
  AND st2.name = '新宿';
実行結果
+---------------+-------------------+
| 区間          | 距離(m)           |
+---------------+-------------------+
| 東京-新宿     | 6053.612945828571 |
+---------------+-------------------+

指定した地点から距離の近い順に並べるSQL

  • 以下のSQLでは、東京駅から近い順に駅を並べて取得しています。
  • 抽出した列に日本語で別名を付けているため、並べ替えをする際に指定する列名にバッククォート(`)を付けています。
    • 実はこれが分からなくて一番苦労しました...
SQL
SELECT
  CONCAT(st1.name, '-', st2.name) AS 区間,
  ST_Distance(st1.location, st2.location) AS '距離(m)'
FROM
  station AS st1,
  station AS st2
WHERE
  st1.name = '東京'
  AND st1.id != st2.id
ORDER BY
  `距離(m)` ASC;
実行結果
+------------------+--------------------+
| 区間             | 距離(m)            |
+------------------+--------------------+
| 東京-新橋        | 1828.3847670426867 |
| 東京-四ツ谷      |  3368.720839511702 |
| 東京-上野        | 3708.4275968908173 |
| 東京-日暮里      |  5208.928929258798 |
| 東京-新宿        |  6053.612945828571 |
| 東京-品川        |  6350.878230165294 |
| 東京-渋谷        |  6455.104217184891 |
| 東京-池袋        |  7424.298478701934 |
| 東京-大崎        |  7733.106194261948 |
| 東京-北千住      |  8319.038187430975 |
| 東京-赤羽        | 11484.835519176353 |
| 東京-蒲田        | 13975.635963846811 |
| 東京-三鷹        |  18813.40814197637 |
| 東京-立川        | 32051.382378005477 |
| 東京-八王子      |  38789.35456665789 |
+------------------+--------------------+

指定した地点の最近隣の地点だけを取得するSQL

  • 以下のSQLでは、東京駅から最も近い駅を取得しています。
  • 上記の「指定した地点から距離の近い順に並べるSQL」とほぼ同じですが、LIMIT句を使って抽出結果を上位1件だけに絞り込んでいます。
SQL
SELECT
  CONCAT(st1.name, '-', st2.name) AS 区間,
  ST_Distance(st1.location, st2.location) AS '距離(m)'
FROM
  station AS st1,
  station AS st2
WHERE
  st1.name = '東京'
  AND st1.id != st2.id
ORDER BY
  `距離(m)` ASC
LIMIT 0,1;
実行結果
+---------------+--------------------+
| 区間          | 距離(m)            |
+---------------+--------------------+
| 東京-新橋     | 1828.3847670426867 |
+---------------+--------------------+
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Go】MySQLのTimestamp型カラム(日本時間が入ってる)をtime.TimeにするとUTCになってしまうのを対応する

こんにちは:smiley:

MySQLのTimestamp型カラムに2020-03-12 15:00:00(日本のおやつの時間!)が入っていて、それをGo言語のコードでtime.Time型として取ってくると"2020-03-12 15:00:00 +0000 UTC"になってしまう。

あるとおもいます。

それを期待通りの値に直す小ネタです。

例.go

    tempTime := dbResults[0].CreatedAt
    location := time.FixedZone("JST", 9*60*60)
    tempTime = tempTime.In(location).Add(-9*time.Hour)
    log.Print(tempTime)
  • 強引にJSTに変換します。
  • そのとき勝手に9時間足されてしまうので、自前で引き直します。

2020/03/16 19:44:57 2020-03-12 15:00:00 +0900 JST

やったぜ。

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

MySQLが起動できない(動かなくなった) という地獄のエラー(ERROR! The server quit without updating PID file  と Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist)

背景

phpの学習中にmysqlをいじっていましたw
急にmysqlが起動できなくなり、エラー解消にほぼ半日躓いてしまったので、
その解決策と試したことを記事としてのせたいと思う!!

mysqlでのエラー文との遭遇

エラー内容一覧

mysqlを起動を確かめる

 mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/ユーザーMBP.pid).

意味はpidファイルを更新せずに終わったよ!ってエラー?
すいません、、、意味がわかりません(涙)

pidファイルとは?

Pidファイルには、特定のプログラムのプロセスID(番号)が含まれています。たとえば、Apache HTTPDはメインプロセス番号をpidファイル(通常のテキストファイル、それ以上のもの)に書き込み、後でそこに含まれる情報を使用して停止します。 cat filename.pid | xargs killを使用して、その情報を使用して自分でプロセスを強制終了することもできるみたいです。

ググって試したこと!

①権限関係

権限確認すると「_mysql:_mysql」だったので、自分:adminに変更した。

chown -R [ユーザ名] /usr/local/var/mysql

うまくいかず。

②エラーログ確認しにいく

cd /usr/local/var/mysql
ls (lsコマンドでmysqlディレクトリの中身を確認する)
その中に
(ユーザー)MBP.err   というファイルがあるので
cat (ユーザー)MBP.err (catコマンドでファイルの中身を確認)

エラーログの中身に

2020-03-16 17:32:04 25993 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

調べてみると、インストール時に mysql_install_db が実行されるが、ディレクトリがわからない状態らしい。
インストール場所とユーザ名を指定して明示的に実行すると良さそうらしいですが、、

mysql_install_db --datadir=/var/lib/mysql --user=mysql

うまくいかず...
参考ページ
https://qiita.com/840_/items/06f32fecbe57c3fdf5ec

③最終手段 全てをアンイストール!!

よく見るとmysql、mysql@5.6、mysql@5.7やらいっぱいmysqlが存在してしまっていたので全てアンインストール!

の前に
*実行前に
そのまま解決手順を実行してしまうと、mysqlのデータが削除されてしまいます。
以下の手順を実行し、バックアップを行ってください!!

$ brew services stop mysql 
 mysqlを一旦停止
$ cp -pr /usr/local/Cellar/mysql /適当な場所/mysql_backup
  これで、mysqlのデータバックアップ。
brew uninstall mysql  
brew uninstall mysql@5.6 
brew uninstall mysql@5.7

まずはmysqlをアンインストール!

次にlocal配下のmysqlを全て削除する

$ rm -rf /usr/local/mysql
$ rm -rf /Library/StartupItems/MYSQL
$ rm -rf /Library/PreferencePanes/MySQL.prefPane
$ rm -rf /Library/Receipts/mysql-.pkg
$ rm -rf /usr/local/Cellar/mysql*
$ rm -rf /usr/local/bin/mysql*
$ rm -rf /usr/local/var/mysql*
$ rm -rf /usr/local/etc/my.cnf
$ rm -rf /usr/local/share/mysql*
$ rm -rf /usr/local/opt/mysql

ポイント!

brew uninstall mysqlでは削除できないファイル群を削除するのが大事!
残っているとアンインストールしても解消されないので、すっきり全て削除!

mysqlを再インストール

brew install mysql(@__使用するmysqlバージョンを指定)

mysqlコマンドをどこからでも実行できるようする

$ echo 'export PATH="/usr/local/opt/mysql/bin:$PATH"' >> ~/.bash_profile

 mysqlバージョンを指定している場合(mysql@5.6)
$ echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.bash_profile

$ source ~/.bash_profile 

  mysqlのコマンドが打てるか確認する
$ which mysql
  以下のように表示されれば成功
/usr/local/opt/mysql/bin/mysql

最後にmysqlを起動

 mysqlの状態を確認するコマンドです
$ mysql.server status

 以下のように表示されれば成功
 SUCCESS! MySQL running (29385)

他にもプロセスを確認

$ ps ax | grep mysql
29714 s001  S      0:00.03 /bin/sh /usr/local/Cellar/mysql/8.0.19/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/ユーザMBP.pid
29825 s001  S      0:05.17 /usr/local/Cellar/mysql/8.0.19/bin/mysqld --basedir=/usr/local/Cellar/mysql/8.0.19 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/8.0.19/lib/plugin --log-error=ユーザMBP.err --pid-file=/usr/local/var/mysql/ユーザMBP.pid
29837 s001  S+     0:00.00 grep mysql

ok問題ないですね!

参考
https://teratail.com/questions/199085

これでようやく解決してくれました!

本当に強引な方法ではありますがうまくいきました!

最後に

本当によく躓くエラーなので反省をとこれからの課題として記事として残しておきます!!

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

Dockerコンテナへローカルファイルのダンプをコピーしてリストアする

私自身の覚えが良くないのもあり、何度も複数コマンドをググって辛みだったため、備忘録として。
まだエンジニアとして8ヶ月ですので、何かミスなどあればマサカリいただければと。

1. ローカルファイルディレクトリへ移動

cd your/local/dump

2. (docker起動中で)dockerのデータベースコンテナのIDを調べる

コンテナIDは 「23fd80dl」のような文字列です。

docker ps

3. ローカルからコンテナへコピーする

docker cp ローカルダンプファイル コンテナ名:/ダンプファイル名

例えばこんな感じ

docker cp qiita.20200316.dump  コンテナ名:/tmp/qiita.20200316.dump

4. 起動中のデータベースコンテナに入る

docker-composeを利用していて、かつ、bashの場合(docker-compose.yml直下で)

docker-compose exec データベースサービス名 bash

5. ダンプファイルをcpしたディレクトリへ移動

3.で /tmpへコピーしたので移動

cd tmp

6. ダンプする

lsしたら、dockerコンテナへコピーしたダンプファイルが直下に見えることを確認してください。

mysql -u ユーザー名 -pパスワード -D データベース名 < ダンプファイル名

以上です〜

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

mysqlにcsvを読み込み

  • 環境

 mysql Ver 14.14
 ubuntu16.04

csvを用意しておく

# mysqlにログイン
$ sudo mysql -u root -p

# database作成
mysql> create database database_name

# databaseを選択
mysql> use database_name

# テーブルを作成し、カラム情報も同時に設定
mysql> create table table_name(
    -> id int,
    -> name varchar(255),
    -> ...
    -> ); 

mysql> load data local infile "file_path/file.csv " into table table_name fields terminated by ',' optionally enclosed by '"';

下記のようなログが出ていれば多分OK

Query OK, XXX rows affected, YYY warnings (ZZZ sec)
Records: XXX Deleted: 0 Skipped: 0 Warnings: YYY

# テーブルを確認
mysql> show tables;

# テーブルの中身まで確認したい場合
mysql> desc table_name;

参考:
http://shiningcureseven.hatenablog.com/entry/2018/08/03/122221

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

mysql 外部サーバーからアクセス

外部からのアクセスを許可するために、設定ファイルを編集

$ sudo -e /etc/mysql/mysql.conf.d/mysqld.cnf

下記の行をコメントアウトする

bind-address = 172.0.0.1

再起動

$ sudo service mysql restart

ポートを開放 (デフォは3306)

$ sudo apt-get install ufw
$ sudo ufw allow 3306

mysqlにログインして、外部から接続できるユーザを作る。
例:username: public password:publicの場合

mysql> grant all privileges on *.* to public@"%" identified by 'public' with grant option;
mysql>  select user,host from mysql.user;

設定したuserのhostが%になっていればOK
+------------------+------------+
| user | host |
+------------------+------------+
| public | % |

クライアントは今回windowsで、MySQL Workbenchを入れた
無事表示できた

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

mysqlをubuntu16.04に導入

インストール

$ sudo apt install mysql-server mysql-client

一応↓もやった

$ sudo mysql_secure_installation

インストールを確認

$ mysql --version

一旦、ルート権限でmysqlにログイン
※パスワードはインストール時に設定したパスワードを

$ sudo mysql -u root -p

パスワードポリシーの設定を変更

mysql> SHOW VARIABLES LIKE 'validate_password%';
mysql> set global validate_password_length=6;
mysql> set global validate_password_mixed_case_count=0;

ユーザーを作成
登録したユーザーを確認
''をつけないとERROR

mysql> CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
mysql> SHOW GRANTS FOR 'user_name'@'localhost';
mysql> select user,host from mysql.user;

試しにデータベースを作成

mysql> CREATE DATABASE test;

testデータベースにlocalhostからログインできるようにとりあえず全権限を付与
権限を確認
rootは怖いのでログアウト

mysql> GRANT ALL ON test.* TO 'user_name'@'localhost';
mysql> exit;

作成したユーザーでログインし直す

$ sudo mysql -u user_name -h localhost -p

参考
https://charlie1012.hatenablog.jp/entry/2015/09/05/170000
https://qiita.com/houtarou/items/a44ce783d09201fc28f5

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