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

LAMP環境でOSS mediawiki を動かしてみる

環境確認

#  OS
$ cat /proc/version
Linux version 4.4.0-75-generic (buildd@lgw01-21) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #96-Ubuntu SMP Thu Apr 20 09:56:33 UTC 2017
#  mysql
$ mysql --version
mysql  Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using  EditLine wrapper
#  php
$ php -v
PHP 7.0.33-0ubuntu0.16.04.6 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.33-0ubuntu0.16.04.6, Copyright (c) 1999-2017, by Zend Technologies

インストール

公式サイトインストール方法を参照

https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Debian_or_Ubuntu/ja

# 結構処理長い
$ sudo apt-get update && sudo apt-get upgrade

MediaWiki のインストール

$ cd /tmp/
$ wget https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz
$ tar -xvzf /tmp/mediawiki-*.tar.gz
$ sudo mkdir /var/lib/mediawiki
$ sudo mv mediawiki-*/* /var/lib/mediawiki

Mysql新規ユーザー登録

# create a NEW mysql user (new_mysql_user):
$ sudo mysql -u root -p
# Mysqlのrootパスワードを入力
Enter password: 

mysql>  CREATE USER 'new_mysql_user'@'localhost' IDENTIFIED BY 'THISpasswordSHOULDbeCHANGED';
Query OK, 0 rows affected (0.00 sec)
quit;
sudo mysql -u root -p
# Mysqlのパスワードを入力
Enter password: 

mysql> CREATE DATABASE my_wiki;
Query OK, 1 row affected (0.00 sec)

mysql> use my_wiki;
Database changed
mysql> GRANT ALL ON my_wiki.* TO 'new_mysql_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye

シンボリックリンクを作成

$ sudo ln -s /var/lib/mediawiki /var/www/html/mediawiki

apache再起動

$ sudo phpenmod mbstring
$ sudo phpenmod xml
$ sudo systemctl restart apache2.service

ここまで終わったらブラウザで対象ページ開いて手順通りにインストールを実行

http://****/mediawiki/

インストールが完了したらLocalSetting.phpが入手できるので対象ディレクトリに設置

$ sudo mv /var/www/LocalSettings.php /var/lib/mediawiki/

インストール完了

http://****/mediawiki/
再度ブラウザで動作をチェックする

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

1つのデータベースで2つのWordPressサイトを管理する方法

はじめに

大事なデータを扱う前は必ずバックアップをとってから行いましょう!責任とれません!

プログラミング歴2ヶ月の素人が書いています。(間違っていたらご指摘ください)

「1つのデータベースで2つのWordPressサイトを管理する」ための学習メモです。

  • サブドメインを使用します。

  • レンタルホスティングサービスとしてGoDaddyを使用しています。

  • データテーブル名の接頭辞を変更し、2つのサイトで1つのデータベースを使い分けます。

今回の目的

GoDaddyの一番安いプランでホスティングサービスを契約し、メインのドメインとサブドメインで2つのWordPressサイトを立ち上げます。

一番安いプランだと1つのデータベースしか作成することができませんが、データテーブル名の接頭辞を変更して2つのサイトを管理します。

サブドメインの作成

ホスティングサービスのcPanel(またはそれに相当する管理画面)からサブドメインを作成します。

Screen Shot 2019-08-28 at 14.19.04.png

  • Subdomain: 使用したいサブドメインを[Subdomain]に入力します。

  • Domain: メインドメインを選択します。

  • Document Root: 自動で入力されます。(ここにサブドメインで使用するサイトのディレクトリが作成されます。。)

「Create」を押すと、サブドメインとそれに対応するディレクトリが自動で作成されます。

ディレクトリの確認

サブドメインを作成したら、「File Manager」を確認し、public_html内にサブドメイン用のディレクトリができていることを確認します。

Screen Shot 2019-08-28 at 14.23.40.png

サブドメインと同名のディレクトリ内に、Wordpressを展開していきます。

データベースのユーザ設定

データベースのユーザー設定をしたことがない場合は、
cPanelの「MySQL® DataBase」から新規ユーザーの作成を行います。

Screen Shot 2019-08-28 at 14.29.01.png

名前とパスワードはどんなものでも構いませんが、あとで使用するので控えておきます。

メインドメイン用データベースをエクスポート

cPanelの「phpMyAdmin」から、データベースにアクセスします。
メインドメイン用サイトのデータベースのエクスポートを行います。

Sqlファイルをエクスポートしてダウンロードします。

Screen Shot 2019-08-28 at 14.33.04.png

テーブル名の接頭辞を変更する

テキストエディタで先ほどダウンロードしたsqlファイルを開きます。
文字の一括置換を使用し、WP_という文字列を別の文字列に変更します。(例えばWP2_など)

Screen Shot 2019-08-28 at 11.38.01.png

メインドメイン用サイトのwp-config.phpを変更する

cPanelの「File Manager」から、wp-config.phpを開き、以下のコードを書き換えます。

/**
 * WordPress データベーステーブルの接頭辞
 *
 * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
 * インストールすることができます。半角英数字と下線のみを使用してください。
 */
$table_prefix = 'wp_';

$table_prefix = 'wp_';のイコール以下を、先ほど一括置換した接頭辞に書き換えて保存します。

サブドメイン用WEBサイトのアップロード

FTPクライアント、またはcPanelの「File Manager」から、サブドメインのディレクトリにワードプレスファイルを展開します。手順は以下で説明します。

「Dupulicator」でサイトのコピーZipファイルを作成する

すでにローカル環境で準備したサイトがある場合は、以下記事も参考になるかもしれません。

『GoDaddyでサーバとドメインを借りてローカル環境でテストしたWordpressサイトをデプロイする方法』
https://qiita.com/shin-ph/items/ef87d163f1f094c7f24a

「Dupulicator」というプラグインを使用することで、Wordpressサイトのコピーzipファイルとインストーラを作成することができます。

作成したWordpressサイトのコピーzipファイルとインストーラを、サブドメインのディレクトリにアップロードします。

サブドメイン用サイトを展開してインストールする

http://サブドメイン/installer.php」にアクセスすることで、インストーラが起動します。
基本的に設定を変える必要はありませんので、指示にしたがってzipファイルを展開します。

Screen Shot 2019-08-28 at 11.39.43.png

Step2で「Connect and Remove all the data」を選択します。
これによって、既存のデータベース(メインドメイン用)は全てサブドメインのデータベースに置きかわります。

あとは指示にしたがってインストールを終了させます。

サブドメイン用サイトの確認

インストールが終了したら、サブドメインにアクセスし、サイトがきちんと動くかどうか確認します。
動いていれば、サブドメイン用サイトの設定は終了です。

メインドメイン用サイトのデータベースを追加

既存のデータベース(メインドメイン用)は全てサブドメインのデータベースに置きかわってしまいましたので、このままではメインドメイン用のサイトは動きません。

cPanelの「phpMyAdmin」から、データベースにアクセスします。
データベースのインポートを行います。

Screen Shot 2019-08-28 at 14.59.54.png

先ほど編集したSqlファイルをインポートします。

接頭辞を変更したメインドメイン用サイトのデータベースが追加されます。

メインドメイン用サイトの確認

メインドメインにアクセスし、サイトがきちんと動くかどうか確認します。
動いていれば、メインドメイン用サイトの設定は終了です。

まとめ

一番安いプランだと、データベースを1つしか作れませんが、テーブル名の接頭辞を変更することで、2つのサイトを持たせることができます。

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

初心者がMacのローカル環境にMySQL 8.0をインストールしてSequel PROで接続するまでの注意点。

はじめに

会社でMySQLを使用する業務を行うことになりました。
ProgateのSQLコースを修了しただけの低レベルの僕に合わせて、
上司がMySQLの基礎を固めるための簡単なトレーニングメニューを組んで下さいました。
簡単そうだからすぐに終わらせようと思っていたのに、最初の段階でちょっと躓いて、一週間以上かかってしまいました。
今後同じ道を辿る初心者を生み出さないために、注意点をまとめました。

Google先生が教えてくれる既存の資料は、Homebrewを使用する方法だとか、
MySQL5.6 や 5.7 のやり方のものがほとんどです。
この記事は、きちんと現時点での最新版 MySQL8.0 でのやり方を記録しています。

記事のターゲット

下記のようなキーワードでGoogle検索している方に、ぜひこの記事を見つけてほしいです。

「MySQL 接続できない」
the server quit without updating pid file
No such file or directory
Access denided for user
server command not found
Authentication plugin 'caching_sha2_password' cannot be loaded

今回の目的

上司から頂いたトレーニングメニューは以下です。

参考資料:MySQL5.6リファレンスマニュアル(日本語版) をもとに、
1. ローカル環境もしくは仮想環境を用意してMySQLをインストールする。
2. 起動したMySQLへクライアントツール(なんでもよし)で接続する。
3. リファレンスマニュアル実施(3.3 データベースの作成と使用 )
4. リファレンスマニュアル実施(3.6 一般的なクエリーの例 )

上記ミッションのうち、 1~2 を遂行する際に少し躓いたため、これを遂行する際の注意点をここにまとめています。

※ MySQLはローカル環境にインストールします。
※ MySQLは最新版の8.0をインストールします。
※ MySQL8.0の資料は英語表記のため、唯一日本語資料が用意されているMySQL5.6のマニュアルを参考に進めております。

結論

申し訳有りません。
Sequel PROでログインできた段階で、舞い上がってこんな記事を作成してしまいましたが、
Sequel PRO上で操作しようとすると必ずエラーがでて進まなくなってしまいました。
そこで再度調べた所、認証方式がどうこうではなく、そもそもSequel PROはMySQL8.0に非対応とのことで、どうあがこうと無理という結論に達しました。

僕がこの結論にたどり着くまでの苦労の軌跡を残すため、この記事は削除せずに置いておくことにします。
どうか、おなじく無駄な時間を過ごす初心者が1人でも減ってくれますように…。

おわり。

【要点】 クライアントツールの選定

さて、今回の重要ポイントを先に説明させていただきます。
今回、クライアントツールはなんでもよいというミッションだったので、評判の良いSequel PROを選択しているのですが、ここが最大のワナなのでした。
なんとSequelPROは、MySQLが採用している最新のログイン認証方式(caching_sha2_password)に非対応だったのです。
以下の記録は、そのことを頭に入れてから読み進めてください。

ローカル環境にMySQLをインストールする。

注意点:
接続に躓いてGoogle検索してみると、Homebrewを使用するインストール方法が沢山ヒットしますが、それは大抵の場合 MySQL5.6 や 5.7 向けの方法かと思われます。
この記事では、公式サイトからダウンロードできる MySQL8.0 用のディスクイメージ(.dmgファイル)を使用してインストールします。

  1. MySQL公式ページの DOWNLOADSメニュー > Communityタブ > MySQL Community Server(GPL) から、DMG Archive をダウンロードして、実行する。

  2. インストーラでUse Strong Password EncryptionUse Legacy Password Encryptionを選ぶ画面になったらUse Legacy Password Encryptionを選択する。
    mac-installer-configuration-password-type.png

  3. あとは通常通りインストールを完了させる。
    (Google検索してみると、このあとTerminalでmysql.server startをさせるような記事が多い。
    しかし、今回の方法でインストールしている場合、システム環境設定からサーバーの起動が可能。
    さらに、基本は自動でサーバーを起動してくれているため、上記の操作は不要である。)

  4. Terminalでmysql -vと入力してみた際、コマンドがmysql: command not foundとなる時は、ターミナルで下記を実行。

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

試しにTerminalでmysql -u root -pと入力して、パスワードを入力すると、問題なくMySQLが実行できると思われる。
(MySQL8.0以前はrootユーザのパスワードを設定するかどうかは任意だったようだけど、今回の方法でインストールしている場合、パスワード設定は必須なので、-pというオプションを使用しないでログインすることは不可能です。)

以上。

既に失敗してしまった方へ。

上記のような手順を踏まず、既にドツボにハマってしまった方。
まだやり直せる状況であれば、MySQLのクリーンインストールを行う事が一番安全だと思います。

Google検索すると、MySQLのアンインストールをする際に、Terminalから関連ファイルの削除を行う情報が多くヒットします。
しかし、今回の方法でインストールしている場合、システム環境設定から完全にアンインストールを行うことが可能です。Terminalを使用してアンインストールをする必要は恐らくありません。
(間違っていたらコメントください。)
システム環境設定からアンインストールをする際に、Also uninstall this preference pane, and launchd support files.にチェックをして下さい。

既にMySQLを運用してしまっている等で、クリーンインストールをすることが出来ない場合、ユーザごとに認証方式を変更する方法もあるようです。
参考:MySQL8.0 認証方式を変更する(Laravel5)
僕はこれを行った際、rootユーザの認証方式を変更してしまい、再度MySQLに接続できなくなる事象が発生しているので、
認証方式を変更する場合は、rootユーザではなく、新規作成されたユーザの設定を変更したほうが安全だと思います。

おわり。

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

初心者がMacのローカル環境にMySQL 8.0をインストールしてSequel PROで接続したかった奮闘記。

はじめに

会社でMySQLを使用する業務を行うことになりました。
ProgateのSQLコースを修了しただけの低レベルの僕に合わせて、
上司がMySQLの基礎を固めるための簡単なトレーニングメニューを組んで下さいました。
簡単そうだからすぐに終わらせようと思っていたのに、最初の段階でちょっと躓いて、一週間以上かかってしまいました。
今後同じ道を辿る初心者を生み出さないために、注意点をまとめました。

Google先生が教えてくれる既存の資料は、Homebrewを使用する方法だとか、
MySQL5.6 や 5.7 のやり方のものがほとんどです。
この記事では、現時点での最新版 MySQL8.0 でのやり方を記録しています。

記事のターゲット

下記のようなキーワードでGoogle検索している方に、ぜひこの記事を見つけてほしいです。

「MySQL 接続できない」
the server quit without updating pid file
No such file or directory
Access denided for user
server command not found
Authentication plugin 'caching_sha2_password' cannot be loaded

今回の目的

上司から頂いたトレーニングメニューは以下です。

参考資料:MySQL5.6リファレンスマニュアル(日本語版) をもとに、
1. ローカル環境もしくは仮想環境を用意してMySQLをインストールする。
2. 起動したMySQLへクライアントツール(なんでもよし)で接続する。
3. リファレンスマニュアル実施(3.3 データベースの作成と使用 )
4. リファレンスマニュアル実施(3.6 一般的なクエリーの例 )

上記ミッションのうち、 1~2 を遂行する際に少し躓いたため、これを遂行する際の注意点をここにまとめています。

※ MySQLはローカル環境にインストールします。
※ MySQLは最新版の8.0をインストールします。
※ MySQL8.0の資料は英語表記のため、唯一日本語資料が用意されているMySQL5.6のマニュアルを参考に進めております。

結論

申し訳有りません。
Sequel PROで接続できた段階で、舞い上がってこんな記事を作成してしまいましたが、
Sequel PRO上で操作しようとすると必ずエラーがでて進まなくなってしまいました。
そこで再度調べた所、認証方式がどうこうではなく、そもそもSequel PROはMySQL8.0に非対応とのことで、どうあがこうと無理という結論に達しました。

僕がこの結論にたどり着くまでの苦労の軌跡を残すため、この記事は削除せずに置いておくことにします。
どうか、おなじく無駄な時間を過ごす初心者が1人でも減ってくれますように…。

おわり。

【要点】 クライアントツールの選定

さて、今回の重要ポイントを先に説明させていただきます。
今回、クライアントツールはなんでもよいというミッションだったので、評判の良いSequel PROを選択しているのですが、ここが最大のワナなのでした。
なんとSequelPROは、MySQLが採用している最新のログイン認証方式(caching_sha2_password)に非対応だったのです。
以下の記録は、そのことを頭に入れてから読み進めてください。

ローカル環境にMySQLをインストールする。

注意点:
接続に躓いてGoogle検索してみると、Homebrewを使用するインストール方法が沢山ヒットしますが、それは大抵の場合 MySQL5.6 や 5.7 向けの方法かと思われます。
この記事では、公式サイトからダウンロードできる MySQL8.0 用のディスクイメージ(.dmgファイル)を使用してインストールします。

  1. MySQL公式ページの DOWNLOADSメニュー > Communityタブ > MySQL Community Server(GPL) から、DMG Archive をダウンロードして、実行する。

  2. インストーラでUse Strong Password EncryptionUse Legacy Password Encryptionを選ぶ画面になったらUse Legacy Password Encryptionを選択する。
    mac-installer-configuration-password-type.png

  3. あとは通常通りインストールを完了させる。
    (Google検索してみると、このあとTerminalでmysql.server startをさせるような記事が多い。
    しかし、今回の方法でインストールしている場合、システム環境設定からサーバーの起動が可能。
    さらに、基本は自動でサーバーを起動してくれているため、上記の操作は不要である。)

  4. Terminalでmysql -vと入力してみた際、コマンドがmysql: command not foundとなる時は、ターミナルで下記を実行。

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

試しにTerminalでmysql -u root -pと入力して、パスワードを入力すると、問題なくMySQLが実行できると思われる。
(MySQL8.0以前はrootユーザのパスワードを設定するかどうかは任意だったようだけど、今回の方法でインストールしている場合、パスワード設定は必須なので、-pというオプションを使用しないでログインすることは不可能です。)

以上。

既に失敗してしまった方へ。

上記のような手順を踏まず、既にドツボにハマってしまった方。
まだやり直せる状況であれば、MySQLのクリーンインストールを行う事が一番安全だと思います。

Google検索すると、MySQLのアンインストールをする際に、Terminalから関連ファイルの削除を行う情報が多くヒットします。
しかし、今回の方法でインストールしている場合、システム環境設定から完全にアンインストールを行うことが可能です。Terminalを使用してアンインストールをする必要は恐らくありません。
(間違っていたらコメントください。)
システム環境設定からアンインストールをする際に、Also uninstall this preference pane, and launchd support files.にチェックをして下さい。

既にMySQLを運用してしまっている等で、クリーンインストールをすることが出来ない場合、ユーザごとに認証方式を変更する方法もあるようです。
参考:MySQL8.0 認証方式を変更する(Laravel5)
僕はこれを行った際、rootユーザの認証方式を変更してしまい、再度MySQLに接続できなくなる事象が発生しているので、
認証方式を変更する場合は、rootユーザではなく、新規作成されたユーザの設定を変更したほうが安全だと思います。

おわり。

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

Ruby on Rails + MySQLのアプリケーションをHerokuにデプロイする手順(Heroku.yml)

どんな記事か

  • Rails+MySQLのアプリケーションをDockerで環境構築した人が、herokuで本番環境を構築できるようになる。

対象読者

  • DockerでRails+MySQLを起動して、「Yay! You’re on Rails!」を表示している人。
  • 本番環境にも反映して誰からにも見せたい人。
  • デプロイのエラーで躓いて困っている人。

完成後のイメージと各ツールのバージョン

今回こちらの実機で確認しました。
- macOS Mojave 10.14.5
- Ruby 2.6.3
- MySQL 5.7
- Heroku 7.29
- Git 2.20.1

localhost_3002_.png

そもそもどうやって、DockerでRails+MySQLの環境構築をすればいいのという方へ??

こちらのgithubのページで、確認してもらえたらと思います。。
https://github.com/YutakaYamasaki/docker_setup_rubyonrails

ちなみに、今回のソースは全て上記の手順を行なった後、デプロイする形になります。

やること

  • Railsのアプリケーション修正、追加
  • Herokuにデプロイ

Railsアプリケーションのファイルを修正、追加する。

Gemfile(修正、追加)

ここで、mysqlとpgのgemを修正、追加します。
開発環境ではMySQLを使用しますが、本番環境(デプロイ)ではPostgreSQLを使用していきます。

変更前と変更後です。

Gemfile
##変更前
gem 'mysql2', '>= 0.4.4', '< 0.6.0'

##変更後
gem 'mysql2', '>= 0.4.4', '< 0.6.0', groups: %w(test development), require: false
gem 'pg', '~> 0.19.0', group: :production, require: false

database.yml(修正、追記)

こちらのファイルにも、本番環境ではPostgreSQLを使用するので、下記のように修正してください。
productionの項目がなければ、追記してください。
項目があれば、削除してください。

database.yml
production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5

heroku.yml(新規ファイル作成)

heroku.ymlファイルを作成します。
アプリのファイルの直下に、heroku.ymlファイルを作成して、下記のように記載してください。

heroku.yml
build:
  docker:
    web: Dockerfile
run:
  web: bundle exec puma -C config/puma.rb

これで各ファイルの編集が完了しました。
Docker側にもファイルの変更を反映させておきましょう。

$ docker-compose build

誤字脱字がないか確認した後に、
Herokuへデプロイを進めましょう!

Herokuにデプロイ

基本全てターミナルで行います。ターミナルの操作に慣れているという前提で進めていきます。

Herokuにログイン

下記のコマンドを打ちます。
途中でエンターキーを押すとブラウザが立ち上がるので、ブラウザで操作してログインが終わると、
ターミナルの方でもログインができます。

$ heroku login                                                                                                               
heroku: Press any key to open up the browser to login or q to exit: 
##ここでエンターキーを押すとブラウザが開くので、ログインを行う。

##ブラウザでログインができてターミナルに戻ると、下記が表示されるはず
Opening browser to https://cli-auth.heroku.com/auth/browser/**************
Logging in... done
Logged in as *******@email.com

Herokuにアプリケーションを作成する。

下記のコマンドを打ちます。
すると、URLが自動発行されます。

$ heroku create
##ちなみにcreateの後にスペースキーを押して、好きなアプリ名を入力すると、そのアプリ名のURLが自動発行されます。お試しあれ
Creating app... done, ⬢ *******
https://******.herokuapp.com/ | https://git.heroku.com/*******.git

Heroku側でPostgreSQLを使用する。

Heroku側でPostgreSQLを使用するように設定します。
クレジットカードを登録したり、有料会員になるとMySQLも使用できます。

$ heroku addons:create heroku-postgresql:hobby-dev                                                                             
Creating heroku-postgresql:hobby-dev on ⬢ ******... free
Database has been created and is available
 ! This database is empty. If upgrading, you can transfer
 ! data from another database with pg:copy
Created postgresql-transparent-70433 as DATABASE_URL
Use heroku addons:docs heroku-postgresql to view documentation

ちなみに、このURLにアクセスしてもエラーが出てきます。なぜなら、アプリがHeroku側にないから。
これからアプリをheroku側にアップロードして、デプロイします。

Heroku.ymlを使ってデプロイする。

Herokuではコンテナ諸々をデプロイすることができます。
その中で、デプロイする方法は2通りあります。
- Container Registry GAを使用してデプロイ
- Heroku.ymlを使用してデプロイ←今回はこちらを使用。

詳細は下記見てもらえると
https://devcenter.heroku.com/categories/deploying-with-docker
まずは、Heroku側でStackをcontainerにセットします。

$ heroku stack:set container

その後、下記のコマンドを打って、デプロイをしましょう。

$ git init
$ git add .
$ git commit -m "******"
$ git push heroku master

デプロイできたか確認する。

下記のコマンドでブラウザが立ち上がり、Railsのアプリケーションがデプロイされているか確認します。

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

XFREEのサーバ(Mysql)にVisualStusioから接続したい。(失敗) [メモ]

XFREEのサーバ(Mysql)にVisualStusioから接続したい。 [メモ]自分メモです。

まえおき。

講義内でローカルのmysqlに接続する方法は習っていたが外部サーバに接続する方法が全く分からなかった。卒業研究でも必要なためメモ用にまとめる。

開発環境

Visualstudio2017

参考サイト

wp-config.phpに指定する「MySQL のホスト名」とは
https://www.nishi2002.com/4123.html
(ホスト名といいう単語がわからなかった。)

実践

今回は接続の確認のみなのでopen,closeできることを確認する。

ConnectionTest - Microsoft Visual Studio  2019_08_28 0_10_54.png

form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Diagnostics;
using System.IO;

namespace ConnectionTest
{
    public partial class Form1 : Form
    {
        MySqlConnection connection = new MySqlConnection();
        MySqlCommand command = new MySqlCommand();
        public Form1()
        {
            InitializeComponent();
            connection.ConnectionString = "server = *********; user id = *************; password = ********; persistsecurityinfo = True; database = ********";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            connection.Open();
            Console.WriteLine("Open");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            connection.Close();
            Console.WriteLine("Close");
        }
    }
}

結果

無理だった。タイムアウトで弾かれ調べた結果以下のものを見つけました。
[レンタルサーバーのデータベースに外部から接続できません。]https://teratail.com/questions/152035
知識不足でした。
VPS借りてやってみます。

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

XFREEのサーバ(Mysql)にVisualStudioから接続したい。(失敗) [メモ]

XFREEのサーバ(Mysql)にVisualStudioから接続したい。 [メモ]自分メモです。

まえおき。

講義内でローカルのmysqlに接続する方法は習っていたが外部サーバに接続する方法が全く分からなかった。卒業研究でも必要なためメモ用にまとめる。

開発環境

Visualstudio2017

参考サイト

wp-config.phpに指定する「MySQL のホスト名」とは
https://www.nishi2002.com/4123.html
(ホスト名といいう単語がわからなかった。)

実践

今回は接続の確認のみなのでopen,closeできることを確認する。
接続にはMySQL Connector/NETを使用する。
ConnectionTest - Microsoft Visual Studio  2019_08_28 0_10_54.png

form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Diagnostics;
using System.IO;

namespace ConnectionTest
{
    public partial class Form1 : Form
    {
        MySqlConnection connection = new MySqlConnection();
        MySqlCommand command = new MySqlCommand();
        public Form1()
        {
            InitializeComponent();
            connection.ConnectionString = "server = *********; user id = *************; password = ********; persistsecurityinfo = True; database = ********";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            connection.Open();
            Console.WriteLine("Open");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            connection.Close();
            Console.WriteLine("Close");
        }
    }
}

結果

無理だった。タイムアウトで弾かれ調べた結果以下のものを見つけました。
[レンタルサーバーのデータベースに外部から接続できません。]https://teratail.com/questions/152035
知識不足でした。
VPS借りてやってみます。

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

docker-composeでMySQL serverが起動OKであることを待つスクリプト

docker-compose を使ってMySQLを起動する処理を含んだスクリプトを書く時の、ちょっとしたネタ
(ちなみにOSはUbuntuを想定)

使っている Dockerfiledocker-compose.yml はそれぞれ以下のようなものです。

Dockerfile
FROM mysql:5.6

EXPOSE 3306
docker-compose.yml
version: '2'
services:
  mysql:
    build: ./docker-compose/mysql
    ports:
      - "3306:3306"
    command: "mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci"
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
      MYSQL_DATABASE: mydb

困るのは、 docker-compose up -d コマンドが終了した後 すぐに MySQLクライアントで接続しようとしても、クエリが応答しないことです。

今までは「ざっくり10秒スリープ」みたいな対応でごまかしていましたが、ウエイト処理を以下のように書くと、遊びの時間が少なくてよいと思います。

timeout 20s sh -c "until (mysql -u root -h 0.0.0.0 -e \"select version();\") do echo .; sleep 1; done"
  • 1秒間隔で問い合わせを行う
  • 応答が返ってきたら、その場で終了
  • 20秒間応答が返ってこなかったら、タイムアウト

といった処理になります。

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