MySQL Database

Hvordan får jeg tatt backup av alle databasene i MySQL? Jeg har et oppsett der jeg må legge til databasenavnet i backupjobben for hver database jeg oppretter. Jeg ønsker en kommando som tar backup av hele SQL-serveren.

Jeg fant ingen bedre måte enn et lite shellscript:

dbs=$(/usr/bin/mysql -B -e "show databases")
 
for db in $dbs
do
    if [ $db != Database ];
    then
        /usr/bin/mysqldump --opt $db  >>  finfil
    fi
done

Nå er heller spørsmålet hvordan jeg tar restore om det skulle noen gang bli nødvendig. Da tenker jeg på at all data er blitt borte og alt må tilbake fra backupfilen.

Gjer det heller slik, då har du ei fil per database i det minste.

for database in $(/usr/bin/mysql -B -e "show databases"|grep -v \
Database); do mysqldump -u root $database > $database.mysql; done

I mysql 3.23.40 virkar iallefall mysqldump --all-databases mysqldump < somefile for å gjenoprette...

Alternativt:

# mysqldump -u username -p databasename>output-filename.sql
# mysql -u username -p databasename<input-filename.sql

Oppsett

Sette passord på mysql-root:

  server:~# mysql -u root mysql
  mysql> update user set password=password('passord') where user='root';
  mysql> flush privileges;

Tildele tilgang til database for (nye) brukere:

  mysql> grant all privileges on db.* to arne@localhost identified by 'pwd' with grant option;
  mysql> grant select on losore.* to edel@localhost identified by 'passord';
Databasene ligger i /var/lib/mysql/.