ラベル MySQL の投稿を表示しています。 すべての投稿を表示
ラベル MySQL の投稿を表示しています。 すべての投稿を表示

2024年12月15日日曜日

【MySQL 8.4.3 LTS】WindowsでZip Archiveからインストールする方法

✅はじめに

こんにちは!今回は、MySQL 8.4.3 LTSをWindowsにインストールする際に、Zip Archiveを使用する手順を解説します。この方法は、軽量で柔軟なセットアップが可能なため、インストールディレクトリを自由に指定したい場合や、複数のMySQLバージョンを管理したい場合に適しています。




📦1. MySQL 8.4.3 LTSのZip Archiveをダウンロード

  1. MySQL公式サイトにアクセスします。
  2. 「MySQL Community (GPL) Downloads »」を選択します。
  3. 「MySQL Community Server」をクリックし、ページ下部の「Looking for previous GA versions?」を選択してバージョン一覧を表示します。
  4. OSとして「Microsoft Windows」を選択し、Windows (x86, 64-bit), ZIP Archiveをダウンロードします。
  5. 「No thanks, just start my download」をクリックしてダウンロードを開始します。



🗂2. ダウンロードしたZipファイルの解凍

  1. ダウンロードした mysql-8.4.3-winx64.zip を右クリックして、解凍します。
  2. 解凍先は自由ですが、推奨ディレクトリとして以下のような場所を使用します:
    C:\mysql



⚙️3. MySQLの初期設定

  1. my.iniファイルの作成
    解凍先のフォルダに移動し、以下の内容で my.ini ファイルを作成します:


[mysqld]
# 基本設定
basedir=C:/mysql datadir=C:/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
port=3306
  • basedir と datadir は解凍先に応じて変更してください。
  • datadir フォルダはこの後に作成します。
  1. データディレクトリの作成
    C:\mysql フォルダ内に新しく data フォルダを作成します。
  2. 初期化コマンドの実行
    コマンドプロンプトを管理者権限で開き、次のコマンドを実行してデータディレクトリを初期化します:

cd C:\mysql\bin mysqld --initialize --console
  • 初期化が成功すると、一時的なrootパスワードが表示されます(例:A temporary password is generated for root@localhost: <パスワード>)。このパスワードをメモしておきます。



🚀4. MySQLを起動する

  1. MySQLサーバーの起動
    初期化が完了したら、次のコマンドを実行してMySQLサーバーを起動します:

mysqld
  • サーバーはバックグラウンドで実行され、3306 ポートで待機します。
  1. MySQLサーバーの停止方法
    別のコマンドプロンプトを開き、次のコマンドを使用してサーバーを停止できます:

mysqladmin -u root -p shutdown



🔐5. MySQLへのログインと初期設定

  1. MySQLへのログイン
    別のコマンドプロンプトを開き、次のコマンドを実行します:

mysql -u root -p 
  • 一時的なパスワードを入力すると、MySQLプロンプトにログインできます。
  1. rootパスワードの変更
    セキュリティ向上のため、rootアカウントのパスワードを変更します:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新しいパスワード';
  1. 設定の確認
    以下のコマンドを実行して、MySQLが正常に動作していることを確認します:

SELECT VERSION();



🖥6. MySQLをWindowsサービスとして登録(オプション)

Windowsの起動時に自動的にMySQLを起動させる場合、サービスとして登録します。

  1. サービス登録コマンド
    次のコマンドを実行してサービスを登録します:

mysqld --install MySQL
  1. サービスの起動
    サービスを起動するには、以下のコマンドを実行します:

net start MySQL
  1. サービスの停止
    サービスを停止する場合は、以下のコマンドを実行します:

net stop MySQL



💡7. 注意点と補足

  • セキュリティ強化
    必要に応じてユーザー権限を設定し、rootアカウント以外のユーザーを作成してください。
  • 環境変数の設定
    コマンドを簡略化するために、C:\mysql\bin を環境変数 PATH に追加することをおすすめします。



🔚まとめ

この記事では、MySQL 8.4.3 LTSをWindows環境にZip Archiveを使用してインストールする手順を解説しました。インストールが完了したら、必要に応じてMySQL WorkbenchなどのGUIツールを利用してデータベースを管理することも可能です。

この記事が参考になれば幸いです!質問や不明点があればコメントでお知らせください。

2017年6月29日木曜日

Excel VBAでMySQLからデータを取得する

Excel VBAでMySQLからデータを取得して表示する

久しぶりにExcel VBAに触れる機会があったので、サンプルプログラムを載せます。久しぶりすぎていろいろダメなところがあるかと思いますがご愛嬌ということで^^;

環境

 本投稿のサンプルプログラムは、以下の環境で作成しております。
  • Windows10 Pro
  • Microsoft Office 2013
  • MySQL 5.7.18

事前条件

MySQLのインストールやらは今回省略しております。よろしければ、以下のブログを参考にしていただければと思います。

MySQL側に以下のテーブルを準備する

エリアマスタ(m_area)
  1. エリアID(id)
  2. エリア名(name)
都道府県マスタ(m_pref)
  1. 都道府県ID(id)
  2. エリアID(area_id) ※エリアマスタとのリレーション
  3. 都道府県名(name)

ODBCデータソースアドミニストレータのユーザDSNに登録する

以下は参考例です。環境に応じて読み替えてください。ドライバは「MySQL ODBC 5.3 ANSI Driver」です。DSNを設定する際には「Connector/ODBC」をインストールする必要があります。

  • Data Source Name = "任意の名称" ※例:MySQL Database
  • Descripiton = "未入力"
  • TCP/IP Server = "localhost"
  • Port = "3306"
  • User = "root"
  • Password = "未入力"


参照設定(Microsoft ActivX Data Objects 6.1 Library)

参照設定をする際に、2.xや6.xなどのバージョンがありますが、特に古い環境で使用する予定がなければ最新のものを参照設定してあげればよいと思います。

クラスモジュール作成

データベースからの取得結果を受け取るクラスモジュールを作成します。この辺りの実装方法は好みなので、別に無理に作らなくてもよいです。
init()はJavaで言うとコンストラクタっぽいことをやるために実装しています。VBAでもコンストラクタはあるらしいのですが、引数を設定できないようなので、以下のようにしています。
データベースから取得したレコードをこちらのオブジェクトに設定して、Collection配列に格納しています。

オブジェクト名:AreaModel

Option Explicit

Private mAreaId As Integer
Private mAreaName As String
Private mPrefId As Integer
Private mPrefName As String

Public Function init(areaId As Integer, areaName As String, prefId As Integer, prefName As String)
    mAreaId = areaId
    mAreaName = areaName
    mPrefId = prefId
    mPrefName = prefName
End Function

Public Property Get getAreaId() As Integer
    getAreaId = mAreaId
End Property

Public Property Get getAreaName() As String
    getAreaName = mAreaName
End Property

Public Property Get getPrefId() As Integer
    getPrefId = mPrefId
End Property

Public Property Get getPrefName() As String
    getPrefName = mPrefName
End Property

標準モジュール作成

MySQLへの接続、SQLの実行、セルに値を設定して表示する、といった一連の処理を作成します。connectionStringやSQL文、セルに値を設定する部分はプログラムの見た目が悪くなるので、別functionに委譲しています。

オブジェクト名:M_DB

Option Explicit

Sub selectArea()
    Dim conn As New ADODB.connection
    conn.CursorLocation = adUseClient
    conn.connectionString = createConnectionString
    conn.Open
   
    Dim rs As ADODB.recordSet
    Set rs = conn.Execute(areaSelectSql)
   
    ' DBからの取得結果を配列に格納
    Dim areaList As New Collection
    Dim area As AreaModel
    Do While rs.EOF = False
        Set area = New AreaModel
        area.init rs.Fields(0), rs.Fields(1), rs.Fields(2), rs.Fields(3)
        areaList.Add area
        rs.MoveNext
    Loop
   
    ' DBから取得したデータをセルに配置
    showCells areaList
   
    ' 後始末
    rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
End Sub

Private Function createConnectionString()
    Dim connectionString As String
    connectionString = "Driver={MySQL ODBC 5.3 ANSI Driver};" _
        & " Server=localhost;" _
        & " Database=test201706;" _
        & " Uid=root;" _
        & " Pwd=;"
    createConnectionString = connectionString
End Function

Private Function areaSelectSql() As String
    Dim sql As String
    sql = "SELECT " _
        & "a.id as area_id " _
        & ",a.name as area_name " _
        & ",p.id as pref_id " _
        & ",p.name as pref_name " _
        & "FROM " _
        & "test201706.m_area as a " _
        & "inner join test201706.m_pref as p on a.id = p.area_id"
    areaSelectSql = sql
End Function

Private Function showCells(areaList As Collection)
    ' 先頭行
    Worksheets("Sheet1").Cells(1, 1).Value = "エリアID"
    Worksheets("Sheet1").Cells(1, 2).Value = "エリア名"
    Worksheets("Sheet1").Cells(1, 3).Value = "都道府県ID"
    Worksheets("Sheet1").Cells(1, 4).Value = "都道府県名"
   
    ' データ部
    Dim rowIdx As Integer
    rowIdx = 2
    Dim area As Variant
    For Each area In areaList
        Worksheets("Sheet1").Cells(rowIdx, 1).Value = area.getAreaId
        Worksheets("Sheet1").Cells(rowIdx, 2).Value = area.getAreaName
        Worksheets("Sheet1").Cells(rowIdx, 3).Value = area.getPrefId
        Worksheets("Sheet1").Cells(rowIdx, 4).Value = area.getPrefName
        rowIdx = rowIdx + 1
    Next
End Function

2017年1月3日火曜日

Windows10にMySQL5.7をインストール

Windows10にMySQL5.7(ZIP Archive)をインストール

手元にWindows10端末が手に入ったので、さっそくMySQLをインストールしてみました。本記事はMySQL5.7をインストールした際のメモです。インストール方法についてはZIP Archiveで行います。

(1)MySQL Community Serverをダウンロード

ダウンロードページで「Windows (x86, 64-bit), ZIP Archive」をダウンロードします。

(2)ダウンロードしたファイルを解凍して配置

ダウンロードしファイルを解凍して配置します。本記事では作成場所を「C:\server\mysql\mysql-5.7.17-winx64\」とします。

(3)データフォルダの作成

データフォルダを作成します。本記事では作成場所を「C:\server\mysql\mysql-5.7.17-winx64\data\」とします。

(4)my.iniファイルの作成

my.iniファイルを作成します。本記事では作成場所を「C:\server\mysql\mysql-5.7.17-winx64\my.ini」としました。my.iniファイルの記載内容については、以下を参考にしてください。また、パスを記載する際には¥は使えないので、スラッシュを使います。
[mysqld]セクションの中には、MySQLサーバの動作に関する記述です。
[mysql]セクションには、mysql.exe(クライアントツール)の動作に関する記述です。

[mysqld]
basedir=c:/server/mysql/mysql-5.7.17-winx64/
datadir=c:/server/mysql/mysql-5.7.17-winx64/data/
character-set-server=utf8
[mysql]
default-character-set=utf8

(5)コマンドを使って初期化

管理者権限でコマンドプロンプトを起動します。本記事ではmysqldが「c:\server\mysql\mysql-5.7.17-winx64\bin」の中に入っているため、フォルダを移動します。そして、以下のコマンドを入力し、実行します。

>mysqld --initialize-insecure --console

すると、以下のようにコマンドプロンプトに表示されます。

2016-12-30T02:29:20.484733Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-12-30T02:29:21.113727Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-12-30T02:29:21.241187Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-12-30T02:29:21.339550Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: c57fd5a5-ce37-11e6-beb3-f0d5bf000ae0.
2016-12-30T02:29:21.356860Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-12-30T02:29:21.366678Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

もし、以下のような内容がコマンドプロンプトに表示された場合、dataフォルダに何か入っている可能性があるため、dataフォルダの中身を空にします。

2016-12-30T02:28:57.458744Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-12-30T02:28:57.460749Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2016-12-30T02:28:57.461752Z 0 [ERROR] Aborting

(6)MySQLを開始

コマンドプロンプトでMySQLを開始します。本記事では、サービスに登録せずに、コマンドからMySQLを起動します。(5)と同じく、mysqldが入っているフォルダまで移動し、以下のコマンドを入力します。

> mysqld --console

(7)MySQLに接続

コマンドプロンプトを起動し、以下のコマンドを入力します。(5)と同じくmysqlが入っているフォルダまで移動します。

>mysql -u root

(8)簡単な動作確認

「show databases;」などのコマンドを入力して、データベース一覧が表示されればインストールがうまくいっていると思われます。
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.10 sec)

※以下のサイトを参考にしました。あわせてご覧ください。