初めてのMySQL最新版のインストール、コマンド一覧
■Mysql centos6.7 apache2.2 最新のDLとインストールについて
順次読み替えるが、基本の考え方は同じはずで、
サイトにいってリポジトリ→rpmを5つ落とす。
その後shared以外インスト→sharedインストで終わり。
wget ●●
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.27-1.el6.x86_64.rpm
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.27-1.el6.x86_64.rpm
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.27-1.el6.x86_64.rpm
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.27-1.el6.x86_64.rpm
http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.27-1.el6.x86_64.rpm
yum install MySQL-{client,devel,server,shared-compat}-5.6.27-1.el6.x86_64.rpm
インストール時、
→sharedは必ずshared-compatを入れた後でないとだめ。
yum install MySQL-shared-5.6.27-1.el6.x86_64.rpm
vim
shiftかctrl + delete でカットになる。
ーーーーーー
WPインストール
https://ja.wordpress.org/wordpress-4.3.1-ja.tar.gz
■mysql拡張インストール
※今入ってるのと同じバージョンにする
#yum --enablerepo=remi list
php-mysql.x86_64 5.4.31-1.el6.remi remi
(バージョン確認!)
#yum install --enablerepo=remi php-mysql.x86_64
(インストール開始!)
php56-php-mysqlnd.x86_64 5.6.15-1.el6.remi remi
うえで出てきたバージョンと併せるように下記コマンドで拡張インスト
yum install --enablerepo=remi --enablerepo=remi-php56 php-mysql
php.ini
⇒extension=msql.soコメントアウトされてるが、
これはこのまま書き変えなくていいかも。ちゃんと動いてるの確認。
Mysqlコマンド一覧
mysql起動
service mysql start
■mysqld自動起動設定
centos6
chkconfig mysql on
場所は/etc/init.d/mysql
centos7
systemctl enable mysqld
■MySQLバージョン確認
mysql --version
■インストール後の初期設定
■起動
service mysqld start
■自動起動設定
$ chkconfig mysqld on
再度確認すると設定が変更されているのがわかる。
$ chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
■初期文字コード設定 (文字化け防ぐため)
vi /etc/my.cnf で下記を追記
[mysqld]
default-storage-engine=InnoDB
innodb_file_per_table
character-set-server = utf8
collation-server = utf8_general_ci
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8
[client]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
[mysql]
default-character-set=utf8
■設定反映
/etc/init.d/mysqld restart
■ログイン
■初期文字コード確認
show variables like "char%";
■DB削除
DROP DATABASE db_name;
■DB作成
CREATE DATABASE jcom_db;
※ちなみに作成するときはInnoDBを指定するのがいいっぽい。
トランザクションといって、DBにアクセスしている間は基本的にロックされ、
他の人がアクセス等出来ないような仕様。
そうすることで事故を防ぐ仕様であり、これが出来るのがInnoDBのみのようだ。
※文字コードデフォルトを変えて、DB作り直しても変わらないときは
set character_set_database;
とか
set character_set_server = utf8;
これでいける。
■テーブル構造確認
DESC wp_users;
■テーブルのカラムを表示
show create table wp_posts;
■条件指定して検索
select * from wp_postmeta where meta_value like '%㎝%';
select * from wp_postmeta where meta_value like '%mm%';
meta_id , post_id, mete_key , meta_value
desc wp_postmeta;select post_id from wp_posts where meta_value like '%㎝%';
■カラム名からテーブル名を検索
select table_name, column_name from information_schema.columns where column_name = 'post_id' and table_schema = 'データベース名_db';
select meta_id from wp_commentmeta where meta_value like '%㎝%';
■外部ホストからの接続コマンド
# mysql -h linuxserver.jp -u user1 -p
■ユーザー
全ユーザ確認
ユーザ追加
GRANT ALL PRIVILEGES ON データベース名_db.* TO ユーザ名@localhost IDENTIFIED BY 'password';
権限つけながら新規ユーザー追加はこれが便利だが、Mysql8以降では不可となった。
create user後にgrant構文で権限を付与すること。
ユーザパスワード変更
set password for ユーザ名=PASSWORD('XXXXX');
rootパス変更
update mysql.user set password=password('XXXXX') where user = 'root';
ユーザ追加 外部IPアドレスを追加する(DBが外部ホストの場合)
kataokaユーザ が 192.168.1.* から xxxdb へアクセスできるように追加設定する。
mysql> grant all privileges on xxxdb.* to kataoka@"192.168.1.%"
-> identified by 'password' with grant option ;
kataoka@"%" 全てのホストからアクセス可能
kataoka@localhost サーバにログインしてからアクセス可能
kataoka@"192.168.1.12" IPアドレスが192.168.1.12のホストからアクセス可能
kataoka@"mydomain.co.jp" ドメインがmydomain.co.jpからのアクセスが可能
with grant option このユーザにGRANTコマンドを実行する権限を与える場合にこのオプションを追加する。 自分の場合、MySQLをよく知っている管理者等のユーザにこのオプションを付けている。
権限の確認
SHOW GRANTS FOR ユーザ名@localhost \G
権限表示(ユーザ指定しない)
show grants status;
権限付与(データベースに このユーザを)
grant all on データベース名.* to ユーザ名;
ユーザー削除
DELETE FROM mysql.user WHERE user='ユーザー名' AND host='localhost';
FLUSH PRIVILEGES;
こっちでいいかも
削除できたか確認
SELECT Host, User, Password FROM mysql.user WHERE user='ユーザー名';
■テーブル操作
構造確認
show columns from post;
テーブル構造を保ったまま中身を削除(auto incrementはリセットされる)
truncate table uriage;
テーブル構造を保ったまま中身を削除(auto incrementは保持される)
delete from uriage;
■フィールド
中身確認
select フィールド名 from テーブル名;
項目を追加
INSERT INTO DB名.テーブル名 (フィールド名, フィールド名)
VALUES ('入れる値1', '入れる値2');
■MySQL dump バックアップ方法
別サーバにデータベースをコピー。
db1(user1、password1) から
hostname サーバ(ユーザ名 hostuser)の db2(user2、password2)に
例
mysqldump -u user1 -p password1 -n db1 | ssh 変更してたらここにポート番号 hostuser@hostame mysql -u user2 -p password2 db2
下記記事にてdumpデータの入れ方も記載してある。