# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
# dnf install -y MariaDB-server mariadb-devel
# yum -y install mysql-server mysql-devel
[mysql]
default-character-set = utf8mb4
[mysqladmin]
default-character-set = utf8mb4
[mysqldump]
default-character-set = utf8mb4
[server]
character-set-server = utf8mb4
[mysqld]
character-set-server = utf8mb4
[mariadb]
character-set-server = utf8mb4
## MySQL[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
[client]
default-character-set = utf8
[odbc]
default-character-set = utf8
# systemctl start mysqld
# systemctl enable mysqld
# systemctl status mysqld
# service mysqld start
# chkconfig mysqld on
# chkconfig --list mysqld
# mysql_secure_installation
rootとしてログイン
# mysql -u root -p
現在登録されているユーザ、ホスト、パスワード確認
SELECT
CONVERT(user USING utf8) AS user,
CONVERT(host USING utf8) AS host,
password
FROM
mysql.user;
rootパスワード登録
set password for root@localhost=password('rootパスワード');
set password for root@'自分のホスト名'=password('rootパスワード');
一旦ログアウトし、ログインし直してみてパスワードを確認
mysql> exit
# mysql -u root -p
匿名ユーザ削除
delete from mysql.user where user='';
既存データベース一覧表示
show databases;
testデータベース削除
drop database test;
mysql> status
または
mysql> show variables like 'char%';
データベース仕様 :データベース|testdb :ユーザ|testuser :パスワード|testpass
rootとしてログイン
# mysql -u root -p
TakeAsh.netドメイン内全体からのアクセスを許可する場合
grant all privileges on testdb.* to testuser@'%.TakeAsh.net' identified by 'testpass';
192.168.0.xからのアクセスを許可する場合
grant all privileges on testdb.* to testuser@'192.168.0.%' identified by 'testpass';
一旦ログアウトし、testuserでログインしてテスト
mysql> exit
# mysql -u testuser -p
既存データベース一覧表示
show databases;
新規データベース作成
create database testdb;
testdbに接続
use testdb
既存テーブル表示
show tables;
testtbl作成
create table testtbl(num int, name varchar(50));
レコード登録
insert into testtbl values(1,'山田太郎');
insert into testtbl values(2,'岳');
レコード表示
select * from testtbl;
レコード更新
update testtbl set name='山田次郎' where num=1;
レコード削除
delete from testtbl where num=1;
テーブル削除
drop table testtbl;
空のパスワードを設定することで、パスワード無しでログインできるようになる。
作業終了後はパスワードを再設定すること。
> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
MySQL 5.1 リファレンスマニュアル :: B.1.4.1 How to Reset the Root Password
default-time-zone='+09:00'
SET time_zone = '+09:00';
SET time_zone = 'SYSTEM';
SELECT @@global.time_zone, @@session.time_zone;
現在時刻の表示
SELECT CURDATE(), CURTIME(), NOW();
外部からmysqlへのアクセスを許可する
3306:tcp
$ mysqldump -u ユーザ名 -p データベース名 [テーブル名] -r バックアップファイル名.sql
文字コードを指定してリストア
$ mysql -u ユーザ名 -p --default-character-set=utf8 データベース名
mysql> SET names 'utf8';
mysql> SOURCE バックアップファイル名.sql;
Dumping and importing from/to MySQL in an UTF-8 safe way - makandropedia
特定のデータベースについて、テーブル毎に個別にバックアップを行うスクリプト
bash 版
#!/bin/bash
if [ $# -lt 2 ]; then
cmd=`basename $0`
echo "usage: ${cmd} <DataBase> <UserName>"
exit 1
fi
DataBase=$1
UserName=$2
Dir=Tables
if [ ! -d ${Dir} ]; then
mkdir ${Dir}
fi
WorkFile=${Dir}/_tables.txt
echo "enter password for ${UserName}:"
read Password
mysql -u "${UserName}" --password="${Password}" \
--database "${DataBase}" -e "show tables;" > "${WorkFile}"
exec 3< "${WorkFile}"
# drop header line
read Table 0<&3
while read Table 0<&3
do
echo "${Table}"
mysqldump -u "${UserName}" --password="${Password}" --force \
"${DataBase}" "${Table}" > "${Dir}/${Table}.sql"
done
exec 3<&-
PowerShell 版
# Backup database by tables.
$username = 'testuser'
$database = 'testdb'
$fileTables = '_Tables.txt'
$tablesSkip = @('table', 'names', 'to', 'skip')
$today = Get-Date -Format "yyyyMMdd"
$dirOut = New-Item "C:/Backup/${env:COMPUTERNAME}_${database}_Tables_${today}" -ItemType Directory -Force
Write-Output "Output: ${dirOut}"
$passSecure = Read-Host -AsSecureString "Input password for '${username}'"
$passPlain = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($passSecure))
mysql -u $username --password="$passPlain" --database $database -e "show tables;" >"${dirOut}/${fileTables}" 2>$null
$tables = @(Get-Content "${dirOut}/${fileTables}")
$tables[1..($tables.length - 1)] |
Where-Object { -not $tablesSkip.Contains($_) } |
ForEach-Object { Write-Output $_; mysqldump -u $username --password="$passPlain" --force $database $_ -r "${dirOut}/${_}.sql" 2>$null }
#!/usr/bin/perl
# split MySQL dump into each tables.
use strict;
use warnings;
use utf8;
use Encode;
my $charsetConsole = 'CP932';
my $charsetFile = 'UTF-8';
binmode( STDIN, ":encoding($charsetConsole)" );
binmode( STDOUT, ":encoding($charsetConsole)" );
binmode( STDERR, ":encoding($charsetConsole)" );
@ARGV = map { decode( $charsetConsole, $_ ); } @ARGV;
my $infile = $ARGV[0] or die("usage: splitSqlDump.pl <dump.sql>\n");
my $dirSqls = './sqls/';
my $structuresfile = $dirSqls . '_structures.sql';
mkdir($dirSqls);
unlink <"${dirSqls}*">;
my $regSkip = qr{^\s*(
LOCK\sTABLES\s`[^`]+`\sWRITE|
/\*!40000\sALTER\sTABLE\s`[^`]+`\sDISABLE\sKEYS\s\*/|
/\*!40000\sALTER\sTABLE\s`[^`]+`\sENABLE\sKEYS\s\*/|
UNLOCK\sTABLES
);}x;
my $regInsert = qr{^\s*INSERT\sINTO\s`(?<table>[^`]+)`\sVALUES\s\([\s\S]+\);};
my $regBreak = qr{(VALUES\s|\),)(\()};
open( my $fhIn, "<:raw", encode( $charsetConsole, $infile ) )
or die("$infile: $!");
open( my $fhStructures, ">:raw", encode( $charsetConsole, $structuresfile ) )
or die("$structuresfile: $!");
my $prevTable = '';
my $fhTable = undef;
while ( defined( my $line = <$fhIn> ) ) {
if ( $line =~ $regSkip ) {
next;
} elsif ( $line !~ $regInsert ) {
print $fhStructures $line;
} else {
renewTable($1);
$line =~ s/$regBreak/$1\n\t$2/g;
print $fhTable $line;
}
}
close($fhIn);
close($fhStructures);
renewTable('');
sub renewTable {
my $newTable = shift;
if ( $prevTable eq $newTable ) {
return;
}
if ($fhTable) {
print $fhTable "/*!40000 ALTER TABLE `${prevTable}` ENABLE KEYS */;\n";
print $fhTable "UNLOCK TABLES;\n";
close($fhTable);
}
if ( !$newTable ) {
return;
}
my $tableFile = $dirSqls . $newTable . '.sql';
open( $fhTable, ">:raw", encode( $charsetConsole, $tableFile ) )
or die("$tableFile: $!");
print $fhTable "LOCK TABLES `${newTable}` WRITE;\n";
print $fhTable "/*!40000 ALTER TABLE `${newTable}` DISABLE KEYS */;\n";
$prevTable = $newTable;
}
# EOF
注意) MySQL 5.0.37 / ODBC Driver 3.51.12 / Windows の構成では文字化けする。
インストール
データベースへの接続
テーブルの全内容を表示
テーブルの更新
テーブルのエクスポート
データのインポート
SQLの実行
DRIVER={MySQL ODBC x.xx Driver}; SERVER=サーバ名; DATABASE=データベース名; UID=ユーザ名; PASSWORD=パスワード; OPTION=オプション
例) DRIVER={MySQL ODBC x.xx Driver}; SERVER=mysql1.TakeAsh.net; DATABASE=testdb; UID=testuser; PASSWORD=testpass; OPTION=65539
後で試す。
This version of the page was edited by TakeAsh at 2020-08-16 08:00:48. View the most recent version.