データベースMySQLについて
インストールおよび環境設定
・CentOS / RedHat ・Debian ・Windows ・Macintosh
- MySQL 5.5 から 5.7へアップグレード(Debian Jessieの場合)
まず、データベースのバックアップ、現状の確認、MySQLを停止、apt-get remove でMySQL 5.5 を削除、MySQL 5.7 インストール、MySQL再起動の手順です。
dpkg -l | grep 'mysql' で現状の確認
削除するMySQL 5.5 環境の確認(mysql-client mysql-server mysql-common mysql-community-client mysql-community-server mysql-utilites など)
インストール ここを参考に
- MySQL APT repository config tool 最新版をチェックし更新 https://dev.mysql.com/downloads/repo/apt/
- 例えば ダウンロード wget http://dev.mysql.com/get/mysql-apt-config_0.8.6-1_all.deb
- レポジトリのインストール dpkg -i mysql-apt-config_0.8.6-1_all.deb
- MySQL 5.6 か 5.7の選択
- 更新 apt-get update
- サーバーのインストール apt-get install mysql-community-server
mysql-server 再起動
MySQL 5.5から5.7へプログラムをアップグレードした後、データベースをアップグレードします。
Linuxのコマンドラインで、 $ sudo mysql_upgrade -uroot -p
- MySQL 5.7 から 8 へのアップグレード(Ubuntu 18.04の場合)
アップグレードの手順 ここを参考に
- Add MySQL APT repository
- Update APT index and install MySQL server
- Manage mysql.service
- Mariadb-server のインストール(Debian 10 buster)
Debian 8 や Debian 9 からDebian 10へMySQLをアップグレードした場合など、MySQLおよびMariaDBの設定環境が混在して、MySQLが起動しない場合がありました。
apt remove --purge コマンドでも設定ファイルなどが削除されない場合があります。
my.cnf の設定などは、次のサイトを参考に確認し、調整します。https://beyondjapan.com/blog/2016/03/2002-mysql-socket-error/
それでも動作が不安定、起動しない場合は、Debian 10を再インストールすることも解決策です。
- MariaDB-server 10.5 へのアップグレード (Debian 9 Stretch)
アップグレードの手順 ここを参考に
- Data Backup
- uninstall old version
- install new version
- start server
- upgrading data directory
- test
- MariaDB 10.1 から 10.3 へのアップグレード (Debian 9)
アップグレードの手順 ここを参考に
- MariaDB-server 10.5 へのアップグレード (Debian 10 Buster)
アップグレードの手順 ここを参考に
- Data Backup
- uninstall old version
- install new version
- start server
- upgrading data directory
- test
- MariaDB の my.cnf (Ubuntu Ubuntu 20.04.6 LTS)
Ubuntuではデフォルトで /etc/my.cnf ファイルがないので、自分で追加しました。他の設定方法もあるようですが。
/etc/my.cnfに以下の内容を追記
[mysqld]
innodb_buffer_pool_size=4G
max_allowed_packe=20M
innodb_log_buffer_size=256M
innodb_thread_concurrency=24
MariaDB再起動 sudo systemctl restart mysql sudo systemctl restart mysqld
local以外の外部から接続する設定
作業中です。
コマンドの基礎
MySQLユーザーのパスワードを設定
環境: MySQL 5.0
・GRANT文でユーザー登録、パスワード指定
mysql > GRANT SELECT ON データベース名.フィールド名 TO 'ユーザー'@'ホスト' IDENTIFIED BY 'パスワード';
・SET PASSWORD文でパスワード設定
mysql > SET PASSWORD FOR 'ユーザー'@'ホスト'=PASSWORD('パスワード');
・UPDATE文でパスワード設定
mysql > UPDATE user SET Password=PASSWORD('パスワード') WHERE User='ユーザー' AND Host='ホスト';
mysql > FLUSH PRIVILEGES;
※ 権限テーブルを直接変更した場合は、FLUSH PRIVILEGES を実行し、テーブルを再度読み込み、権限の変更を反映させます。 mysqladminコマンドの場合 $ mysqladmin -uユーザー -hホスト password パスワード ・ユーザー登録 あらゆる操作ができるユーザーを登録
mysql > GRANT ALL PRIVILEGES ON *.* TO ユーザー IDENTIFIED BY 'パスワード'
mysql > GRANT ALL PRIVILEGES ON *.* TO 'ユーザー'@'ホスト' IDENTIFIED BY 'パスワード';
・ユーザーの削除
mysql > DROP USER 'ユーザー'@'ホスト';
データベースの作成、削除
・mysqladminを使う方法
$ mysqladmin -uroot -p create データベース名
$ mysqladmin -uroot -p drop データベース名
・SQLでの場合
mysql > CREATE DATABASE データベース名;
mysql > DROP DATABASE データベース名;
データベースのダンプ
・mysqldumpコマンドの場合
gzipで圧縮
# mysqldump -u user -p データベース名 | gzip > dbname.dump.gz
リストア(インポート)する場合
zcat dbname.dump.gz | mysql -u user -p データベース名
パスワードはコマンドラインで入力します
sudoの場合は sudo zcat インポートファイル.sql.gz | sudo mysql -uユーザ名 -pパスワード DB名
すべてのデータベースのバックアップとリストア
・mysqldumpコマンドの場合
mysqldump -u root -p --all-databases > ~/backup.sql
cp -r /etc/mysql ~/
・リストア
mysql -u root -p < ~/backup.sql