- 投稿日:2020-02-07T21:51:17+09:00
xamppからmysql利用時の文字化け問題
恐竜名文字化け問題
show create table テーブル名;コマンドで文字コードを確認。
ラテン語になっている。2.解決策
(1).[mysqld]の編集
my.iniファイルの[mysqld]セクションの最後の「## UTF 8 Settings」を探す
変更前
## UTF 8 Settings #init-connect=\'SET NAMES utf8\' #collation_server=utf8_unicode_ci #character_set_server=utf8 #skip-character-set-client-handshake #character_sets-dir="C:/xampp/mysql/share/charsets"↓utf-8に関する下記部分をコメントアウトする。
変更後
## UTF 8 Settings init-connect='SET NAMES utf8' collation_server=utf8_unicode_ci character_set_server=utf8 skip-character-set-client-handshake character_sets-dir="C:/xampp/mysql/share/charsets"(2).次に[client][mysqldump][mysql]の各最後に次の行を追加する。
default-character-set=utf8mb4
[client] # password = your_password #port = 3306 port = 3308 socket = "C:/xampp/mysql/mysql.sock" #下記を追記 default-character-set=utf8mb4[mysqldump] quick max_allowed_packet = 16M #下記を追記 default-character-set=utf8mb4[mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates #下記を追記 default-character-set=utf8mb4(3).作成済みテーブルの文字コードの変更
下記コマンドで、文字コードを変更。
ALTER TABLE tbl_dino CONVERT TO CHARACTER SET utf8mb4;
MariaDB [db_dino]> show create table tbl_dino; +----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | tbl_dino | CREATE TABLE `tbl_dino` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, `dname0` varchar(100) DEFAULT NULL, `type0` varchar(50) DEFAULT NULL, `n_src1` int(11) DEFAULT NULL, `type1` varchar(50) DEFAULT NULL, `n_src2` int(11) DEFAULT NULL, `type2` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 | +----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) MariaDB [db_dino]>参考url
- 投稿日:2020-02-07T20:42:12+09:00
初心者によるプログラミング学習ログ 232日目
100日チャレンジの232日目
twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。
232日目は
おはようございます
— ぱぺまぺ@webエンジニアを目指したい社畜 (@yudapinokio) February 6, 2020
232日目
・MySQLを自分のパソコンに導入
・udemyでcss+javascript講座#早起きチャレンジ#駆け出しエンジニアと繋がりたい#100DaysOfCode
- 投稿日:2020-02-07T16:48:04+09:00
VirtualBox内のMySQL接続
はじめに
VirtualBoxにセットアップしたMySQLに接続する手順を記述します
目的
同じマシン内に異なるMySQLバージョン(5系と8系)を共有する際に使用します
前提事項
- VirtualBox及びVagrantを使用します
- DB接続確認はMySQL Workbenchやphpで行います
VirtualBox内のMySQL接続
Vagrantファイル作成
Vagrantを使用して仮想マシンを作成するため
マシン構成等をファイルに定義しますVagrantfileVagrant.configure("2") do |config| # Ubuntuのboxを指定する config.vm.box = "bento/ubuntu-18.04" # private networkのIPを指定する config.vm.network "private_network", ip: "192.168.33.10" # ポートフォワードを指定する config.vm.network "forwarded_port", guest: 3306, host: 33060 end仮想マシン作成
vagrant up
コマンドを実行してプロビジョニングしますMySQLセットアップ
「【Ubuntu 18.04 LTS Server】MySQLサーバを動かす」を参照ください
MySQL接続するポイントしてbind-address設定は必ず行ってください
#すべて許可する場合はコメントアウトします #bind-address = 127.0.0.1 #IP=0.0.0.0もすべての接続が許可されます bind-address = 0.0.0.0MySQL接続確認
MySQL Workbenchの場合
項目 値 Hostname localhost Port 33060(※ポートフォワードのポートと合わせます) Username Mysqlのユーザ名 Password Mysqlのパスワード PHPの場合
<?php $link = mysqli_connect('localhost', 'user', 'password', 'db', '33060'); // 接続状況をチェックします if (mysqli_connect_errno()) { die("DB接続できません:" . mysqli_connect_error() . "\n"); } else { echo "DB接続に成功しました。\n"; } ?>
- 投稿日:2020-02-07T16:00:56+09:00
【DBeaver】【MySQL】Error: access denied for user 'root'@'localhost'の対処法
概要
そもそもDBeaverとは
マルチプラットフォーム対応のデータベースGUIツールで MySQL, PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby など、多くのデータベースに対応しています。
Enterprise Edition では MongoDB, InfluxDB, Apache Cassandra, Redis, Apache Hive など NoSQL / BigData database にも対応しています。今回、DBeaverからMySQLにアクセスしようとしたらタイトルに書いてあるエラーが出て、それが解決できたので自分がやったやり方を書きたいと思う。
環境
DBeaver 6.3.0
MySQL 5.7
Windows10原因
ざっくり言うとMySQLにsudo無しでログインできるようにしたら解決した。
そもそも自分はMySQLにsudo無しでログインできるようになっていなかったのでそれが原因だった。やり方
ほぼこの記事の通りにやった。
MySQL5.7でsudo無しでrootログイン自分は途中でつまづいたところがあったので一応説明したいと思う。
まずはMySQLにsudoを使ってログインする。sudo mysql -u root -pMySQLにログインしたら下記コマンドを実行する。
'
で囲まれたpasswordは自分で設定したものを打ち込む。
パスワードが生で見えるのでちょっと怖い。ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';それで自分はこれを実行したら下記のエラーが出た。
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements自分はvalidate password プラグインを入れていたのでこのエラーが起こってしまった。なのでこれを取り除きたいと思う。
MySQLで以下を実行する。mysql> uninstall plugin validate_password;消せたかどうかはこれで確認できる。
mysql> SHOW VARIABLES LIKE 'validate_password%'; Empty set (0.00 sec)最後に設定を反映するコマンドを実行して終了。
mysql> FLUSH PRIVILEGES;以下を実行して入れたらsudo無しログイン成功
mysql -u root -pこれで自分はDBeaverからMySQLに接続できるようになりました。
参照元
TeamSQL もいいけど、 DBeaver もいいぞ
MySQL5.7でsudo無しでrootログイン
MySQL5.7のvalidate_passwordとかいうクソ機能殺す
- 投稿日:2020-02-07T14:09:26+09:00
Ubuntu + Node.js + Express の環境から、外部DB(MySQL)へ接続しデータを表示する
前回、Expressの環境は作ったので、その環境で作業する。
MySQL をインストールする
Expressの環境にMySQLデータベースを置くんじゃなくて、参照用に必要。
npm install mysql --savetest.js を作る
app.js 作ってたフォルダ内で、test.js を作る
test.jsconst mysql = require('mysql'); const con = mysql.createConnection({ host: '192.168.123.223', user: 'root', password: 'root', database: 'test_database' }); con.connect((err) => { if (err) throw err; console.log('Connected'); con.query('select * from test_table', function (error, results, fields) { if (error) throw error; console.log(results[0]); }); });node.js で実行
- node test.js を起動
うまく接続出来れば、↓のようになるはず。
$ node test.js Connected RowDataPacket { id: 1, name: 'TOM', created_at: 2020-02-05T15:00:00.000Z, updated_at: 2020-02-05T15:00:00.000Z }
- 接続できなくてエラーになった場合
- Vagrantfile に
config.vm.network "private_network", ip: "192.168.123.223"
が記載されているか?- 特に Vagrantfile をいじくって無ければ、この設定だけで接続できる。
- Vagrantfile については、コレを参照してください。
- VirtualBox の設定で言うと、「NAT」と「ホストオンリーアダプター」の2種類のネットワーク設定が必要
app.js を修正する
前回作った app.js を修正して、MySQLのデータを参照する
app.jsvar express = require('express'); var app = express(); var mysql = require('mysql'); var connection = mysql.createConnection({ host : '192.168.123.223', user : 'root', password : 'root', database : 'test_database', debug : false, }); app.get('/', function (req, res) { connection.connect(); connection.query('select * from test_table', function (error, results, fields) { if (error) { connection.end(); throw error; } res.send(results[0]); }); connection.end(); }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); });node.js で実行
- node app.js を起動
実行すると、コンソールにはコレが出る
Example app listening on port 3000!ブラウザで、 http://192.168.123.223:3000 にアクセスすると、
こんなのが出るはず。これで、ようやくExpressからMySQLへ接続し、データが参照できるようになった。
参考
- 投稿日:2020-02-07T13:37:33+09:00
Docker(+ Docker-Compose) + MySQL を入れる(2)
Docker(+ Docker-Compose) + MySQL を入れた後の話
前回 ので、MySQLを用意してデータを作るとこまで出来たので、
MySQLを起動するとこの話だけ書いておく。Docker-Compose の MySQL を起動する
あとで、もう一つのUbuntu環境にある Express から接続できる状態にしておく。
docker-compose up -d --buildこれだけ。--build のオプションがとても重要。
次は Ubuntu(Express環境) から Ubuntu(MySQL環境) へ接続して表示をするよ!!!
参考
- docker-compose コマンドまとめ
- DockerのMySQLコンテナに外部のサーバーから接続する
- 投稿日:2020-02-07T12:22:14+09:00
MariaDB と MySQL のバージョン比較
どこにも見やすい相対表が無かったので作りました。
ただ、よく調べてみると、MariaDB が MySQL よりも先に特定の機能を先に導入したりしていて、 完璧な相対は出来ない です。(まあ完璧に同じだったらなぜ別の製品を作らないといけないのかという話になりますよね)。
なので、この相対表を仕事で使うのは絶対におすすめしません (免責)。
MariaDB MySQL 5.1 5.1 5.2 5.1 5.3 5.1 5.5 & 10.0. 5.5 10.1 5.6 10.2~3 5.7 MySQL 8 と MariaDB 10.3 以降は注意
MySQL 8 と MariaDB 10.3 は
concrete5 は MySQL 5.1.5 から対応
concrete5 CMS は 5.7.0〜8.5.2までは MySQL 5.1.5 から対応しています。
絵文字 (utf8mb4) の対応は 8.5.0 からです。絵文字対応
絵文字を利用するには、utf8mb4 の collation や charaset である必要があります。
InnoDB で Antelope なデータベースだと、DBの変換時に Index エラーが起きる場合があります。こぼれ話
MySQL の My はオリジナルコード作者の Michael "Monty" Widenius の娘の名前。
MariaDB は、MySQL が当時サン・マイクロシステムズ社に買収され、退社した後に作った互換DB。名前の Maria も、Widenius氏の娘の名前。まさに姉妹DB。参考
https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/#incompatibilities-between-mariadb-101-and-mysql-57
https://enterprisezine.jp/dbonline/detail/4220
https://www.s-style.co.jp/blog/2018/04/1709/
https://arakan-pgm-ai.hatenablog.com/entry/2018/08/03/000000
https://gray-code.com/php/using-mysql-and-mariadb-by-php/