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