- 投稿日:2020-03-16T23:41:37+09:00
【MySQL】プログラミング初心者が今まで遭遇したエラーとその解決方法のメモ
こんばんは!スージーです!
なかなか技術ブログが書けずにモヤモヤしていたので、ちょうど良いネタがあり備忘録も兼ねて。MySQLに接続できないエラー
私は度々、MySQLに接続できずに四苦八苦しています。pidファイルないよーとかsocketないよーとか、その度に過去のメモや参考記事をあちこち探しているのでまとめてみようと思います。
参考
- 【MySQL】pid not foundもしくはpermission deniedの対応方法 https://qiita.com/AK4747471/items/36b73edd9d1e666ae0c0
- RailsプロジェクトでMySQLがbundle installできなかった https://qiita.com/akito19/items/e1dc54f907987e688cc0
- Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib (LoadError) https://note.com/shoki_rails/n/nf7b51ba48084
- mysqlのsocketエラーでrailsアプリが起動できない https://qiita.com/fujitora/items/d341c52706d1954cae28
- mysqld_safe A mysqld process already existsが出た時の対処方法 https://www.takafumitaba.com/mysql-already-exists
- MySQLが再起動しなくなったときに行う3つの手順 https://engineer.evisu0414.com/mysql001/
【遭遇率第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 installproject-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/e1dc54f907987e688cc0project-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買った甲斐がありました。
終わり
- 投稿日:2020-03-16T20:52:27+09:00
【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
を使えば良さそうです。SQLSELECT 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では、東京駅から近い順に駅を並べて取得しています。
- 抽出した列に日本語で別名を付けているため、並べ替えをする際に指定する列名にバッククォート(`)を付けています。
- 実はこれが分からなくて一番苦労しました...
SQLSELECT 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件だけに絞り込んでいます。SQLSELECT 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 | +---------------+--------------------+
- 投稿日:2020-03-16T19:49:35+09:00
【Go】MySQLのTimestamp型カラム(日本時間が入ってる)をtime.TimeにするとUTCになってしまうのを対応する
こんにちは
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やったぜ。
- 投稿日:2020-03-16T18:52:10+09:00
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 mysqlok問題ないですね!
参考
https://teratail.com/questions/199085これでようやく解決してくれました!
本当に強引な方法ではありますがうまくいきました!
最後に
本当によく躓くエラーなので反省をとこれからの課題として記事として残しておきます!!
- 投稿日:2020-03-16T18:20:37+09:00
Dockerコンテナへローカルファイルのダンプをコピーしてリストアする
私自身の覚えが良くないのもあり、何度も複数コマンドをググって辛みだったため、備忘録として。
まだエンジニアとして8ヶ月ですので、何かミスなどあればマサカリいただければと。1. ローカルファイルディレクトリへ移動
cd your/local/dump
2. (docker起動中で)dockerのデータベースコンテナのIDを調べる
コンテナIDは 「23fd80dl」のような文字列です。
docker ps3. ローカルからコンテナへコピーする
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 データベース名 < ダンプファイル名以上です〜
- 投稿日:2020-03-16T17:37:30+09:00
mysqlにcsvを読み込み
- 環境
mysql Ver 14.14
ubuntu16.04csvを用意しておく
# 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
- 投稿日:2020-03-16T15:42:05+09:00
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 3306mysqlにログインして、外部から接続できるユーザを作る。
例: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を入れた
無事表示できた
- 投稿日:2020-03-16T15:05:07+09:00
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;ユーザーを作成
登録したユーザーを確認
''をつけないとERRORmysql> 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