Top / MySQL

コンテンツ一覧

TIPS集

別ホストのMySQLに接続する

別のホストに接続するには -h を使います。ユーザ名を指定してログインするときは-uを使います。また、パスワードも入力してログインするときは、-pを使います。

mysql -h [IPアドレス] -u root -p

これだとパスワードを聞いてくるので、コマンドラインに直接パスワードを書きたい場合は

mysql -h [IPアドレス] -u root  --password=hoge

文字セットを指定して接続する

mysql -u mkino --password=hoge --default-character-set=ujis

MySQL 5.0を使う

Fedora Core release 3 (Heidelberg) にインストールしました。とりあえず、

MySQL-Max-5.0.15-0.i386.rpm
MySQL-server-5.0.15-0.i386.rpm
MySQL-client-5.0.15-0.i386.rpm <- Linux上のクライアント
mysql-administrator-1.1.4-win.msi <- Windowsのクライアントとして

で動いてるっぽいです。

データベースを作成する

mysql> CREATE DATABASE データベース名

データベースを表示する

[root@www ~]# mysqlshow   -uroot -p
Enter password:
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| mysql              |
| test               |
| webdb1             |
+--------------------+

データベース情報を表示する

[root@www ~]# mysqlshow webdb1 -p -uroot
Enter password:
Database: webdb1
+--------+
| Tables |
+--------+
| rss    |
+--------+

テーブル情報を表示する

[root@www ~]# mysql webdb1 -p -uroot
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 53 to server version: 5.0.15-max-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> describe rss;
+-------+------------------+------+-----+---------------------+----------------+
| Field | Type             | Null | Key | Default             | Extra          |
+-------+------------------+------+-----+---------------------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| title | varchar(255)     | YES  |     |                     |                |
| link  | text             | YES  |     | NULL                |                |
| date  | datetime         | NO   |     | 0000-00-00 00:00:00 |                |
+-------+------------------+------+-----+---------------------+----------------+
4 rows in set (0.00 sec)

mysql>

テーブル定義を参照する

テーブルがどの様なSQL文で作成されたか表示します。

mysql> show create table webdb1.rss;
--------------------------+
| Table | Create Table
--------------------------+
| rss   | CREATE TABLE `rss` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `title` varchar(255) default '',
  `link` text,
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=ujis COMMENT='RSS List' |
+-------+---------------------------------------------------
1 row in set (0.00 sec)

参考:
http://www.rfs.jp/sitebuilder/sql/04/07.html#SHOW%20CREATE%20TABLE

my.cnfたちのある場所

rpmでインストールした場合、

/usr/share/mysql/my-medium.cnf

などにあるみたいです。

ユーザ情報の削除。ユーザの追加

DB Magazine 2004/12を読んだのですが、あらかじめ設定されているユーザ情報があると混乱するので、まずは消してからrootなどを新規作成した方がすっきりするとのこと。こんな感じでやってみました。

# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19 to server version: 5.0.15-standard

mysql> truncate table mysql.user;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from mysql.user;
Empty set (0.00 sec)

mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'hogehoge' with grant option;
Query OK, 0 rows affected (0.00 sec)

grantする前にログアウトしちゃうと、入れなくなっちゃうので注意!

あわせて、リモートで接続するためのIDも作成しておきます。

mysql> grant all privileges on webdb1.* to xxx identified by 'yyy';
Query OK, 0 rows affected (0.01 sec)

ところで

*.* to 'root'@'localhost' identified by 'hogehoge'

の意味は 全てのデータベースの全てのテーブル(*.*)にrootはlocalhostからのみ接続可能、パスワードはhogehoge という意味ですね。たとえばリモート接続可能で、webdb1というデータベースの全てのテーブルにアクセス可能なxxxというユーザを作成するには

webdb1.* to xxx identified by 'hogehoge'

となります。

ユーザ追加

webdb1というデータベースに接続可能なhogeというユーザ(パスワードはfuga)を追加する

mysql> grant all privileges on webdb1.* to hoge identified by 'fuga';
Query OK, 0 rows affected (0.00 sec)

このユーザはリモートからも接続可能みたいですね。ただしwebdb1というデータベースのみ。

ユーザへ権限追加。

mysql> grant all privileges on webdb1.* to hoge identified by 'hogehoge';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on webdb2.* to hoge identified by 'hogehoge';
Query OK, 0 rows affected (0.00 sec)

とやっていけば、複数のデータベース(webdb1,webdb2)にアクセスできるようになる模様。

他のユーザの権限を見る

>mysql -u root mysql
mysql> use mysql;
Database changed
mysql> select * from user;
+-------------+------+----------+-------------+-------------+--------------+------------+ 〜
| Host        | User | Password | Select_priv | Insert_priv | Update_priv  | Grant_priv | 〜
+-------------+------+----------+-------------+-------------+--------------+------------+ 〜
| localhost   | root |          | Y           | Y           | Y            | Y          | 〜
| ctkyos18121 | root |          | Y           | Y           | Y            | Y          | 〜
| localhost   |      |          | N           | N           | N            | N          | 〜
| ctkyos18121 |      |          | N           | N           | N            | N          | 〜
+-------------+------+----------+-------------+-------------+--------------+------------+ 〜
4 rows in set (0.01 sec)
mysql>

環境設定を参照する

mysqladmin variable

文字コードを指定して、接続する

mysql -u xxxx -h xxx.xxx.xxx.xxx -p --default-character-set=ujis

など

ログのディレクトリ

/var/lib/mysql/hogehoge.err

errっていっても標準出力もココのような。。。

バイナリログを切り替える

バイナリログとは、いわゆるトランザクションのログです。実行されたSQL文が格納されています。 このログの書き込みファイル名をIncrementするのが以下のコマンドです。

$ mysqladmin  flush-logs -u root --password=xxxxx

つまりこのファイルを

バイナリログを表示する

$ mysqlbinlog バイナリログファイル名

これでバイナリログを表示することができます。

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / MySQL

現在のアクセス:19120


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS