「MySQL」の版間の差分
ナビゲーションに移動
検索に移動
77行目: | 77行目: | ||
====忘れたパスワードをリセット==== | ====忘れたパスワードをリセット==== | ||
*http://dev.mysql.com/doc/refman/4.1/ja/resetting-permissions.html | *http://dev.mysql.com/doc/refman/4.1/ja/resetting-permissions.html | ||
+ | =====Ubuntu 初期パスワードの場所===== | ||
+ | <pre> | ||
+ | $ sudo cat /etc/mysql/debian.cnf | ||
+ | # Automatically generated for Debian scripts. DO NOT TOUCH! | ||
+ | [client] | ||
+ | host = localhost | ||
+ | user = debian-sys-maint | ||
+ | password = KJmv1zRL0acKBftn | ||
+ | socket = /var/run/mysqld/mysqld.sock | ||
+ | [mysql_upgrade] | ||
+ | host = localhost | ||
+ | user = debian-sys-maint | ||
+ | password = KJmv1zRL0acKBftn | ||
+ | socket = /var/run/mysqld/mysqld.sock | ||
+ | </pre> | ||
=====mysqldを--skip-grant-tables オプションで起動===== | =====mysqldを--skip-grant-tables オプションで起動===== | ||
# mysqld --skip-grant-tables & | # mysqld --skip-grant-tables & | ||
97行目: | 112行目: | ||
*https://qiita.com/arm_band/items/12208908041a5506d7f4 | *https://qiita.com/arm_band/items/12208908041a5506d7f4 | ||
mysql> set password for 'wordpress'@'localhost' = 'your password'; | mysql> set password for 'wordpress'@'localhost' = 'your password'; | ||
+ | |||
====初期の権限変更ツール mysql_secure_installation==== | ====初期の権限変更ツール mysql_secure_installation==== | ||
*初期パスワード /var/log/mysqld.log | grep "temporary password" | *初期パスワード /var/log/mysqld.log | grep "temporary password" |
2020年10月11日 (日) 09:36時点における版
目次
MySQL
インストール
Windows
Ubuntu(apt-getでインストール)
- $ sudo apt-get install mysql-server
- 途中でパスワードの設定を求められる
CentOS(yumからインストール)
手順
- https://dev.mysql.com/downloads/repo/yum/ に移動
- 使用しているプラットフォーム用のリリースパッケージを選択してダウンロード
- インストール
- $ sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm
- yum update
- $ sudo yum install mysql-community-server
ダウンロード
MySQL Community Server
- http://dev.mysql.com/downloads/mysql/
- MySQL-5.6.13-1.linux_glibc2.5.i386.rpm-bundle.tar
アカウントの登録
- mysql グループと mysqlユーザーの作成
- # groupadd mysql
- # useradd -g mysql mysql
解凍
- $ tar xvf MySQL-5.6.13-1.linux_glibc2.5.i386.rpm-bundle.tar
インストール
- 標準の最低限のインストールには、サーバーとクライアント RPM をインストールします。
- RPM はまた MySQL サーバーを運用するためのユーザー mysql (存在しない場合) のログインアカウントを作成する
- サーバーがブート時に自動的に起動するように適切なエントリを /etc/init.d/ に作成する
<blockquote>serverインストール時に、初期パスワードの情報がコンソールに出力される</blockquote>
- A random root password has been set. You will find it in '/root/.mysql_secret'.
<blockquote>もしくはログに出力されている</blockquote>
- /var/log/mysqld.log | grep "temporary password"
開発で必要(Djangoなど)
- # rpm -ivh MySQL-devel-5.6.13-1.linux_glibc2.5.i386.rpm
起動と停止
CentOS
- # /sbin/service mysql start
- Starting MySQL... [ OK ]
- # /etc/init.d/mysql stop
- Shutting down MySQL.. [ OK ]
CentOS7
- # systemctl enable mysqld
- # systemctl start mysqld
Ubuntu
- $ sudo /etc/init.d/mysql start
- $ sudo /etc/init.d/mysql stop
- $ sudo /etc/init.d/mysql restart
mysqld_safe(mysqld のラッパ)
- shell> cd mysql_installation_directory
- shell> bin/mysqld_safe &
起動設定がされたか確認
- # chkconfig | grep "mysql"
- mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
権限の初期設定
忘れたパスワードをリセット
Ubuntu 初期パスワードの場所
- $ sudo cat /etc/mysql/debian.cnf
- # Automatically generated for Debian scripts. DO NOT TOUCH!
- [client]
- host = localhost
- user = debian-sys-maint
- password = KJmv1zRL0acKBftn
- socket = /var/run/mysqld/mysqld.sock
- [mysql_upgrade]
- host = localhost
- user = debian-sys-maint
- password = KJmv1zRL0acKBftn
- socket = /var/run/mysqld/mysqld.sock
mysqldを--skip-grant-tables オプションで起動
- # mysqld --skip-grant-tables &
mysqld サーバに接続
- # mysql -u root mysql
新しいパスワードの設定
rootパスワードの変更
- mysql> set password for 'root'@'localhost' = password('newpassword');
- Query OK, 0 rows affected (0.00 sec)
パスワードの設定 MySQL8
- mysql> set password for 'wordpress'@'localhost' = 'your password';
初期の権限変更ツール mysql_secure_installation
- 初期パスワード /var/log/mysqld.log | grep "temporary password"
- # mysql_secure_installation
- Change the root password? [Y/n] n
- Remove anonymous users? [Y/n] Y
- Disallow root login remotely? [Y/n] Y
- Remove test database and access to it? [Y/n] n
- Reload privilege tables now? [Y/n] Y
- All done! If you've completed all of the above steps, your MySQL
- installation should now be secure.
- Thanks for using MySQL!
- Cleaning up...
簡易設定
バージョンの確認
- mysql> select version();
- +-----------+
- | version() |
- +-----------+
- | 5.0.77 |
- +-----------+
- 1 row in set (0.00 sec)
MySQL 簡易設定
データベースの作成
作成
- # mysql -u root -p
- mysql> create database test_db default character set utf8;
- Query OK, 1 row affected (0.00 sec)
文字コード
確認
- mysql> show create database test_db;
- +----------+------------------------------------------------------------------+
- | Database | Create Database |
- +----------+------------------------------------------------------------------+
- | test_db | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
- +----------+------------------------------------------------------------------+
- 1 row in set (0.00 sec)
権限
- 接続を許可するユーザーをmysqlデータベース内で管理している
- ユーザーがアクセスする際にはアクセス元のホスト(IPアドレス)もセットで認証が行われる
権限テーブル
テーブル名 | 説明 |
---|---|
user | ユーザーの基本的な定義 |
host | ホストに対する権限の定義 |
db | データベースに対する権限の定義 |
tables_priv | テーブルに対する権限の定義 |
clumuns_priv | カラムに対する権限の定義 |
ユーザーの作成
- mysql> create user test_user@localhost;
- Query OK, 0 rows affected (0.03 sec)
権限の付与
限定して付与
- mysql> grant create,alter,select,insert,update,delete,index on *.* to test_user@localhost identified by 'newpassword';
- Query OK, 0 rows affected (0.00 sec)
管理権限を付与
- test_admin@localhost を作成した上で管理権限を付与
- リモートアクセスを可能とするには、test_admin@localhost の部分を test_admin@'%' とする
- mysql> grant all privileges on *.* to test_admin@localhost identified by 'newpassword' with grant option;
- Query OK, 0 rows affected (0.00 sec)
外部から接続
ポートを開ける
- # firewall-cmd --permanent --zone=public --add-port=3306/tcp
- # firewall-cmd --reload
root@%を追加
確認
- mysql> select user,host from mysql.user;
- +------------------+-----------+
- | user | host |
- +------------------+-----------+
- | mysql.infoschema | localhost |
- | mysql.session | localhost |
- | mysql.sys | localhost |
- | pma | localhost |
- | root | localhost |
- | wordpress | localhost |
- +------------------+-----------+
ユーザーの追加
- mysql> create user 'root'@'%' identified by 'パスワード';
- mysql> set password for 'root'@'%' = 'パスワード';
- mysql> grant all on *.* to 'root'@'%';
確認
- mysql> select user, host from user;
- +------------------+-----------+
- | user | host |
- +------------------+-----------+
- | root | % |
- | mysql.infoschema | localhost |
- | mysql.session | localhost |
- | mysql.sys | localhost |
- | pma | localhost |
- | root | localhost |
- | wordpress | localhost |
- +------------------+-----------+
バックアップとリストア
mysqldump
テーブル名を指定してダンプ
- mysqldump [オプション] データベース名 [テーブル名 ...]
複数のデータベースを対象とする
- mysqldump [オプション] --databases [オプション] データベース名 [データベース名 ...]
すべてのデータベースを対象とする
- mysqldump [オプション] --all-databases [オプション]
例
バックアップ例
- # mysqldump --default-character-set=utf8 -uroot -p mt > mt_backup20140120.sql
- Enter password:
レストア例
- mysqldumpの出力はSQL文の羅列であるため、復元するにはリダイレクトを使ってmysqlに結果を与えれば良い
- # mysql -u root -p mt < mt_backup20140120.sql
Tips
管理
データファイルの場所
- /etc/my.cnf
- datadir=/var/lib/mysql
テーブル一覧を表示
- # mysql -u root -p
- mysql> use mt
- Reading table information for completion of table and column names
- You can turn off this feature to get a quicker startup with -A
- Database changed
- mysql> show tables;
- +-------------------+
- | Tables_in_mt |
- +-------------------+
- | mt_asset |
- | mt_asset_meta |
- | mt_association |
- :
- | mt_ts_funcmap |
- | mt_ts_job |
- +-------------------+
- 44 rows in set (0.00 sec)
セッションの確認と切断
- show processlist;
- kill [Id]
SQL
制約を無視してテーブルをtruncateする
- 一旦、FOREIGN_KEY_CHECKSを0にする
mysqlコマンド
ソースファイルのSQLを実行
- \.<ファイル名>
データベースの変更
- use
ヘルプ
- help
テーブル定義を確認
- show create table テーブル名
テーブル一覧
- show tables
ポートを調べる
- mysql> show variables like 'port';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | port | 3306 |
- +---------------+-------+
- 1 row in set (0.00 sec)
プログラミング
JDBC Download
C#から接続
- using MySql.Data.MySqlClient;
- using System;
- using System.Data;
- namespace Mt2Wp
- {
- class Program
- {
- static void Main(string[] args)
- {
- var pgm = new Program();
- pgm.AccessTest();
- }
- public void AccessTest()
- {
- // Unable to convert MySQL date/time value to System.DateTime
- // https://stackoverflow.com/questions/2934844/unable-to-convert-mysql-date-time-value-to-system-datetime
- var conInfo = $"Database=wordpress;Data Source=192.168.0.2;User Id=root;Password={password}; pooling = false; convert zero datetime=True";
- using(var conn = new MySqlConnection(conInfo))
- {
- conn.Open();
- var da = new MySqlDataAdapter("select * from wp_posts", conn);
- var ds = new DataSet();
- da.Fill(ds);
- foreach (DataTable table in ds.Tables)
- {
- foreach (DataRow row in table.Rows)
- {
- foreach (DataColumn col in table.Columns)
- {
- Console.Write($"{row[col]}\t");
- }
- Console.WriteLine("");
- }
- }
- }
- }
- }
- }
© 2006 矢木浩人