MENU

MySQLのインストールと操作方法

MySQLをインストールします。
インターネットに接続できていなければなりません。

[root@centos52 /]# yum install mysql mysql-server -y

 

 

 

mysqldデーモンを起動します。

[root@centos52 /]# /etc/init.d/mysqld start

 

起動しているか確認するには

[root@centos52 /]# /etc/init.d/mysqld status

 

sqldデーモンを自動起動させるには

[root@centos52 /]# chkconfig mysqld on

 

起動設定の確認

[root@centos52 /]# chkconfig --list mysqld 

 

その後、パスワード無しで入ると

[root@centos52 /]# mysql -u root

Access denied for user 'root'@'localhost' (using password: NO)

と言われ、-pオプションを付けて適当にパスワードを入れても当然、

[root@centos52 /]# mysql -u root -p

Access denied for user 'root'@'localhost' (using password: YES)

と言われてログインできませんでした。

 

MySQLのrootの初期パスワードは無いとの情報が多かったのですが、
本当は初期パスワードが何か設定されているのでしょうか。不明です。
バージョンはmysql-server-5.0.7です。

 

なので1度sqldデーモンをストップし、

[root@centos52 /]# /etc/init.d/mysqld stop

 

ユーザ権限チェックをスキップしつつMySQLを起動します。
最後に「&」を付けてバックグラウンドで動作させて下さい。

[root@centos52 /]# /usr/bin/mysqld_safe --skip-grant-tables &

 

mysqld_safeがインストールされているディレクトリが上記の
/usr/binでは無い場合は、findコマンドで場所を検索して見て下さい。

[root@centos52 /]# find -name mysqld_safe -print

 

パスワード無しで入れます。

[root@centos52 /]# mysql -u root

 

ログインの前にデータベースの初期化を推奨しているページも有りました。

 

データベースの初期化

[root@linux ~]# /etc/rc.d/init.d/mysqld start

 

 

# mysql_install_db

 

 

 

rootのパスワードの変更方法

以下、rootのパスワードを変更するには以下を入力します。
が、色々試行しても変更できませんでした。
一応手順を記述しておきます。

 

 

方法1
データベース名「mysql」を使用しに行きます。

mysql> USE mysql

※まとめてログイン時に

[root@centos52 /]# mysql -u root mysql

と入力しても良いです。

 

rootのパスワードを(再)設定します。

 

mysql> UPDATE user SET Password=PASSWORD('変更後のパスワード名') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

 

sqldデーモンの再起動で、次回は変更後のパスワードで
ログインできるとのことです。

 

 

方法2
以下のページを訳しました。訳が間違っていればすみません。。
MySQL

 

1.rootかMySQLサーバを起動可能なユーザーでログイン。

 

2.サーバのプロセスIDを含む.pidファイルの格納場所を見つけます。

一般的な格納場所は以下です。

/var/lib/mysql/
/var/run/mysqld/
/usr/local/mysql/data/

 

一般的にファイルの拡張子は「.pid」、
名前は「mysqld」かホスト名のどちらかで始まります。

※CentOS5.2では/var/run/mysqld/mysqld.pidと思われる。

 

そのプロセスを落とす。

kill `cat /var/run/mysqld/mysqld.pid`

※バッククォートを適切に使うこと。
実際にmysqld.pidを見てプロセス番号を指定しても良いかもしれない。

 

3.ホームディレクトリに「mysql-init」ファイルを作成します。

内容は以下の1行

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

 

4.MySQLを起動します。

「--init-file=~/mysql-init」オプションを付けること。

mysqld_safe --init-file=~/mysql-init &

 

すると先程のファイルの中に記載したパスワードで起動してきます。
サーバが問題なく起動すればmysql-initは削除しておきましょう。

 

5.これで新しいパスワードでMySQLでログインできます。

※「mysqld_safe」をフルパス指定で起動させる。
(「--init-file=~/mysql-init」オプション付き)

[root@centos52 /]# /usr/bin/mysqld_safe --init-file=~/mysql-init &

 

※mysqldデーモンを停止する。

[root@centos52 /]# /etc/init.d/mysqld stop

 

※パスワード入力を迂回して起動。

[root@centos52 /]# /usr/bin/mysqld_safe --skip-grant-tables &

 

 

 

データベースの操作方法

mysqlの終了時はquitと入力します。

mysql> quit

 

データベースを作成します。

mysql> CREATE DATABASE database_a;

 

データベース一覧を見るには

mysql> SHOW DATABASES;

 

「database_a」データベースを使用します。

mysql> USE database_a

 

テーブル一覧を見るにはデータベースを選択後、

mysql> SHOW TABLES;

 

テーブルを作成します。

mysql> CREATE TABLE table_a ( id integer, name char(15), kind char(15), code integer );

 

 

分けて入力するなら、

mysql> CREATE TABLE table_a
-> (
-> id integer,
-> name char(15),
-> kind char(15),
-> code integer
-> );

 

まずテーブル作成時には列にどんな型のデータを
入れるかを設定しなくてはなりません。書き方は

-> 列名 型

という要領です。

 

型の意味は以下です。

 

●INTEGERとは

整数型のこと。

 

●CHAR

固定長文字列型のこと。
格納する文字列数を固定した文字列型。

 

●VARCHARとは

可変長文字列型のこと。
可変長文字列とは格納する
文字列数が固定でない文字列型。

 

●NOT NULL制約とは

データの追加/更新時に、
その列に必ず意味のある値が
設定されることを要求する。

 

データを登録していきます。

mysql> INSERT INTO table_a
-> (id,name,kind,code)
-> VALUES('1','apple','fruit','100');

 

mysql> INSERT INTO table_a
-> (id,name,kind,code)
-> VALUES('2','orange','fruit','101');

 

mysql> INSERT INTO table_a
-> (id,name,kind,code)
-> VALUES('3','carrot','vegetable','200');

 

入力したデータを見ます。

mysql> SELECT * FROM table_a;

 

※フィールドを全て指定した時と同じです。

mysql> SELECT id,name,kind,code FROM table_a;

 

idフィールドとnameフィールドのみ指定してみます。

mysql> SELECT id,name FROM table_a;

 

●フィールドとは

列のこと。

 

●レコードとは

1行のデータのこと。

 

WHERE句を使用して検索条件を指定します。

mysql> SELECT * FROM table_a WHERE id <= 2;

 

mysql> SELECT * FROM table_a WHERE kind = 'vegetable';

 

ORDER BY句を使用して検索結果をソートします。

mysql> SELECT * FROM table_a ORDER BY code;

 

ORDER BY句のDESCを使用して検索結果を降順でソートします。

mysql> SELECT * FROM table_a ORDER BY code DESC;

 

GROUP BY句で特定の列に従ってグループ化します。

mysql> SELECT kind,AVG(code) FROM table_a GROUP BY kind;

 

UPDATE句で登録済みデータを更新します。
idが1のレコードのnameをringoに変更する。

UPDATE table_a SET name = 'ringo' WHERE id = 1;

 

DELETE句でデータを削除します。

DELETE FROM table_a WHERE id = 1;

 

複数のテーブルを結合するにはJOIN句を使用します。