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

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

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句を使用します。