關於linux系統mysql還原資料庫的信息

本文目錄一覽:

Linux 如何修復損壞的MySQL資料庫

由於斷電或非正常關機而導致MySQL資料庫出現錯誤是非常常見的問題。MySQL分別針對不同的數據表類型提供了多個數據檢測恢復工具,這些工具是:myisamchkisamchk其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為預設的數據表類型,這裡以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:

myisamchk tablename.MYI

進行檢測,如果需要修復的話,可以使用:

myisamchk -of tablename.MYI

關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL伺服器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL伺服器Shutdown掉。

另外可以把下面的命令放在你的rc.local裡面啟動MySQL伺服器前:

[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI

其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對於使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對於使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL資料庫存放的位置。

需要注意的時,如果你打算把這條命令放在你的rc.local裡面,必須確認在執行這條指令時MySQL伺服器必須沒有啟動!

Linux查看資料庫備份腳步的配置信息命令

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

mysql

登錄

Linux 關於MYSQL資料庫命令(查看,備份等操作) 原創

2016-04-19 11:22:33

fuwen1989

碼齡7年

關注

1.Linux系統下啟動MySQL的命令:

/ect/init.d/mysql start (前面為mysql的安裝路徑)

2.linux下重啟mysql的命令:

/ect/init.d/mysql restart (前面為mysql的安裝路徑)

3.linux下關閉mysql的命令:

/ect/init.d/mysql shutdown (前面為mysql的安裝路徑)

4.連接本機上的mysql:

進入目錄mysql\bin,再鍵入命令mysql -u root -p, 回車後提示輸入密碼。

5.打開資料庫後的操作命令

查看資料庫的命令

mysql show databases;

打開mydb庫

mysql use mydb;

查看數據表的詳細結構

mysql desc funtb;

新建資料庫

mysql create database school;

新建表

mysql create table user01(

– id varchar(20) NOT NULL,

– userName varchar(10) NOT NULL,

– age int(11) default’0′,

– sex char(2) NOT NULL default’m’,

– PRIMARY KEY (id)

– )TYPE=InnoDB;

Query OK, 0 rows affected, 1 warning (0.02 sec)

mysqldesc student;

插入

mysql insert into student(id,stuName) values(‘1′,’tomcat’);

刪除

mysql delete from student where id=’1′;

刪除表中所有數據

mysql truncate table student;

刪除表

mysql drop table temp;

創建新用戶並給予許可權

mysql grant all privileges on *.* to dbuser@localhost identified by ‘1234’

with grant option;

更改Mysql用戶密碼

c:\Mysql5.0\binmysqladmin -u root -p password 1234

Enter password: ****

備份資料庫及表(新版資料庫不加3306埠號)

c:\mysql\bin\mysqldump –u root –p mydb d:\backup.sql

執行此語句將把資料庫mydb 備份到D盤的backup.sql文件中

備份多個資料庫表

c:\mysql\bin\mysqldump –u root –p 3306 school user01 user d:\backup.sql

此句的意思是把school庫中的user01表和user表的內容和表的定義備份到D盤backup.sql文件中。

備份所有的資料庫

c:\myql\binmysqldump –u root –p 3306 –all –databased:backup.sql

還原Mysql資料庫

c:\mysql\bin\mysql –u root –p 3306 school

還原其中的一個表

mysql source d:\books.sql;

退出Mysql連接

mysqlquit(exit)

windows關閉mysql服務

C:\mysql\binnet mysql

linux伺服器崩潰不能啟動系統。如果重新安裝系統。怎麼恢復mysql資料庫

mysql資料庫就是個文件夾,文件夾下的文件就是表。複製到別的地方,防止覆蓋就可以了。一般是都在data這個文件夾下。

linux 備份的資料庫怎麼恢復

一、 使用mysql相關命令進行簡單的本地備份

1 mysqlldump命令

mysqldump 是採用SQL級別的備份機制,它將數據表導成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法。

使用 mysqldump進行備份非常簡單,如果要備份資料庫」 db_backup 」,使用命令:

#mysqldump –u -p phpbb_db_backup /usr/backups/mysql/db_backup2008-1-6.sql

還可以使用gzip命令對備份文件進行壓縮:

#mysqldump db_backup | gzip /usr/backups/mysql/ db_backup2008-1-6.sql.gz (備份後生成的sql不含建庫語句!)

只備份一些頻繁更新的資料庫表:

## mysqldump sample_db articles comments links /usr/backups/mysql/sample_db.art_comm_lin.2008-1-6.sql

上面的命令會備份articles, comments, 和links 三個表。

恢複數據使用命令:

#mysql –u -p db_backup /usr/backups/mysql/ db_backup2008-1-6.sql

注意使用這個命令時必須保證資料庫正在運行。

2 使用 SOURCE 語法

其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如:

# SOURCE /tmp/db_name.sql;

這裡需要指定文件的絕對路徑,並且必須是 mysqld 運行用戶(例如 nobody)有許可權讀取的文件。

3 mysqlhotcopy備份

mysqlhotcopy 只能用於備份 MyISAM,並且只能運行在 linux 和Unix 和 NetWare 系統上。mysqlhotcopy 支持一次性拷貝多個資料庫,同時還支持正則表達。以下是幾個例子:

#mysqlhotcopy -h=localhost -u=goodcjh -p=goodcjh db_name /tmp

(把資料庫目錄 db_name 拷貝到 /tmp 下)

注意,想要使用 mysqlhotcopy,必須要有 SELECT、RELOAD(要執行 FLUSH TABLES) 許可權,並且還必須要能夠有讀取 datadir/db_name 目錄的許可權。

還原資料庫方法:

mysqlhotcopy 備份出來的是整個資料庫目錄,使用時可以直接拷貝到 mysqld 指定的 目錄 (在這裡是 /usr/local/mysql/data/)目錄下即可,同時要注意許可權的問題,另外首先應當刪除資料庫舊副本如下例:

# /bin/rm -rf /mysql-backup/**//*old

關閉mysql 伺服器、複製文件、查詢啟動mysql伺服器的三個步驟:

# /etc/init.d/mysqld stop

Stopping MySQL: [ OK ]

# cp -af /mysql-backup/**//* /var/lib/mysql /

# /etc/init.d/mysqld start

Starting MySQL: [ OK ]

#chown -R nobody:nobody /usr/local/mysql/data/ (將 db_name 目錄的屬主改成 mysqld 運行用戶)

二、使用網路備份

將MYSQL數據放在一台計算機上是不安全的,所以應當把數據備份到區域網中其他Linux計算機中。假設Mysql伺服器IP地址是:192.168.1.3。區域網使用Linux的遠程計算機IP地址是192.168.1.4;類似於windows的網路共享,UNIX(Linux)系統也有自己的網路共享,那就是NFS(網路文件系統),在linux客戶端掛接(mount)NFS磁碟共享之前,必須先配置好NFS服務端。linux系統NFS服務端配置方法如下:

(1)修改 /etc/exports,增加共享目錄

/export/home/sunky 192.168.1.4(rw)

/export/home/sunky1 *(rw)

/export/home/sunky2 linux-client(rw)

註:/export/home/目錄下的sunky、sunky1、sunky2是準備共享的目錄,10.140.133.23、*、linux-client是被允許掛接此共享linux客戶機的IP地址或主機名。如果要使用主機名linux-client必須在服務端主機/etc/hosts文件里增加linux-client主機ip定義。格式如下:

192.168.1.4 linux-client

若修改/etc/export文件增加新的共享,應先停止NFS服務,再啟動NFS服務方能使新增加的共享起作用。使用命令exportfs -rv也可以達到同樣的效果。linux客戶端掛接(mount)其他linux系統或UNIX系統的NFS共享。這裡我們假設192.168.1.4是NFS服務端的主機IP地址,當然這裡也可以使用主機名,但必須在本機/etc/hosts文件里增加服務端ip定義。/export/home/sunky為服務端共享的目錄。如此就可以在linux客戶端通過/mnt/nfs來訪問其它linux系統或UNIX系統以NFS方式共享出來的文件了。

把MYSQL數據備份到使用Linux的遠程計算機需要在兩端都安裝NFS協議(Network File System),遠程NFS計算機安裝NFS協議後還要修改配置文件:/etc/exports,加入一行:

/usr/backups/mysql/ 192.168.1.4 (rw, no_root_squash)

表示將/usr/backups/mysql/目錄共享。這個目錄具有遠程root用戶讀寫許可權。保存NFS配置文件,然後使用命令:

#exportfs -a –r

然後重新啟動NFS服務:

#service nfsd start

遠程計算機設定後,在MYSQL伺服器/mnt 目錄下建立一個backup_share目錄:

#mkdir /mnt/backup_share

將遠程的Linux計算機的/usr/backups/mysql/目錄掛載到MYSQL伺服器的/mnt/backup_share目錄下:

# mount -t nfs 192.168.1.4:/usr/backups/mysql /mnt/backup_share

將目錄掛載進來後,只要進入/mnt/backup_share 目錄,就等於到了IP地址:192.168.1.4那部NFS 計算機的/usr/backups/mysql 目錄中。下面使用mysqldump把「phpbb_db_backup」備份到遠程計算機:

# mysqldump db_backup /mnt/backup_share/ db_backup2008-1-6.sql

自動完成網路備份的方法:

Linux 伺服器上的程序每天都在更新 MySQL 資料庫,於是就想起寫一個 shell 腳本,結合 crontab,定時備份資料庫。建立一個shell腳本:sample_db_backup.sh

# At the very end the $(date +%F) 自動添加備份日期

mysqldump -u username -p password -h hostname sample_db /mnt/backup_share/sample_db.$(date +%F)

#un-mount the filesystem

umount /mnt/backup_share

# mount \u2013o soft 192.168.1.4:/archive /mnt/backup_share

說明:mount NFS伺服器的一個重要參數:hard (硬) mount或soft(軟)mount。

硬掛載: NFS客戶機會不斷的嘗試與NFS伺服器的連接(在後台,一般不會給出任何提示信息),直到掛載上為止。

軟掛載:會在前台嘗試與NFS伺服器的連接,是默認的連接方式。當收到錯誤信息後終止mount嘗試,並給出相關信息。

對於到底是使用硬掛載還是軟掛載的問題,這主要取決於你訪問什麼信息有關。例如你是想察看NFS伺服器的視頻文件時,你絕對不會希望由於一些意外的情況(如網路速度一下子變的很慢)而使系統輸出大量的錯誤信息,如果此時你用的是硬掛載方式的話,系統就會等待,直到能夠重新與NFS 伺服器建立連接傳輸信息。另外如果是非關鍵數據的話也可以使用軟掛載方式,如FTP一些數據等,這樣在遠程機器暫時連接不上或關閉時就不會掛起你的會話過程。

下面建立腳本文件許可權:chmod +x ./sample_db_backup.sh

然後使用將此腳本加到 /etc/crontab 定時任務中:

01 5 * * 0 mysql /home/mysql/ sample_db_backup.sh

好了,每周日凌晨 5:01 系統就會自動運行 sample_db_backup.sh 文件通過網路備份 MySQL 資料庫了。

三、實時恢復M y S Q L數據方法

在對MySQL數據和表格結構進行備份時,mysqldump是一個非常有用的工具。然而,通常情況下,一般一天只備份一次,或者在一個特定的間隔備份一次。如果在剛備份完成的一段時間以內數據丟失,那麼這些數據很有可能無法恢復。有什麼方法可以對數據進行實時性地保護呢?事實上,現在有幾種方法都可以實現MySQL資料庫的實時保護。這裡介紹其中一種,即使用二進位日誌進行數據恢復。

1 設置二進位日誌方法

要想從二進位日誌恢複數據,你需要知道當前二進位日誌文件的路徑和文件名。一般可以從選項文件(即my.cnf or my.ini,取決於你的系統)中找到路徑。如果未包含在選項文件中,當伺服器啟動時,可以在命令行中以選項的形式給出。啟用二進位日誌的選項為– log-bin。要想確定當前的二進位日誌文件的文件名,輸入下面的MySQL語句:

# SHOW BINLOG EVENTS \G

2 最簡單的數據恢復

每天備份和運行二進位日誌的確是一個在MySQL伺服器中恢複數據的不錯方法。比如,可以每天在深夜使用mysqldump對數據進行備份,如果某天在數據備份完成後的一段時間裡,由於某種原因數據丟失,可以使用以下方法來對其進行恢復。首先,停止MySQL伺服器,然後使用以下命令重新啟動MySQL伺服器。該命令將保證是惟一可以訪問該資料庫伺服器的人:

# /etc/init.d/mysqld stop

Stopping MySQL: [ OK ]

# mysqld –socket=/tmp/mysql_restore.sock –skip-networking

這裡, 一socket選項將為U n i x 系統命名一個不同的Socket文件。一旦伺服器處於獨佔控制之下,就可以放心地對資料庫進行操作,而不用擔心在進行數據恢復的過程中有用戶嘗試訪問資料庫而導致更多的麻煩。進行恢復的第一個步驟是恢復晚上備份好的dump文件:

#mysql -u root -pmypwd –socket=/tmp/mysql_restore.sock /var/backup/20080120.sql

該命令可以將資料庫的內容恢復至晚上剛剛完成備份的內容。要恢復dump文件創建後的資料庫事務處理, 可以使用mysqlbinlog工具。如果每天晚上進行備份操作時都對日誌進行flush操作,則可以使用以下命令行工具將整個二進位日誌文件進行恢復:

mysqlbinlog /var/log/mysql/bin.123456 \

| mysql -u root -pmypwd –socket=/tmp/mysql_restore.sock

3 針對某一時問點的恢復

對於MySQL 4.1.4,可以在mysqlbinlog語句中通過–start-date和–stop-date選項指定DATETIME格式的起止時間。假設用戶在2008-1-22上午10點執行的SQL語句刪除了一個大的數據表,則可以使用以下命令進行恢復:要想恢復表和數據,你可以恢復前晚上的備份,並輸入:

#mysqlbinlog –stop-date=”2008-1-22 9:59:59″

/var/log/mysql/bin.123456 |

mysql -u root -pmypwd \

–socket=/tmp/mysql_restore.sock

#mysql -u root -pmypwd

該語句將恢復所有給定一stop-date日期之前的數據。如果在執行某SQL語句數小時之後才發現執行了錯誤操作,那麼可能還需要恢復之後輸入的一些數據。這時, 也可以通過mysqlbinlog來完成該功能:

#mysqlbinlog –start-date=”2008-1-22 10:01:00″ \

/var/log/mysql/bin.123456 \

| mysql -u root -pmypwd \

–socket=/tmp/mysql_restore.sock

#mysql -u root -pmypwd

在該行中,從上午10:01登錄的SQL語句將運行。組合執行前夜的轉儲文件和mysqlbinlog的兩行可以將所有數據恢復到上午10:00前一秒鐘。你應檢查日誌以確保時間確切。

4 使用Position進行恢復

也可以不指定日期和時間,而使用mysqlbinlog的選項–start-position和–stop-position來指定日誌位置。它們的作用與起止日選項相同,不同的是給出了從日誌起的位置號。使用日誌位置是更準確的恢復方法,特別是當由於破壞性SQL語句同時發生許多事務的時候。要想確定位置號,可以運行mysqlbinlog尋找執行了不期望的事務的時間範圍,但應將結果重新指向文本文件以便進行檢查。操作命令為:

mysqlbinlog –start-date=”2005-04-20 9:55:00″ –stop-date=”2005-04-20 10:05:00″

/var/log/mysql/bin.123456 /tmp/mysql_restore.sql

該命令將在/tmp目錄創建小的文本文件,將顯示執行了錯誤的SQL語句時的SQL語句。你可以用vi或者gedit文本編輯器打開該文件,尋找你不要想重複的語句。如果二進位日誌中的位置號用於停止和繼續恢復操作,應進行注釋。用log_pos加一個數字來標記位置。使用位置號恢復了以前的備份文件後,你應從命令行輸入下面內容:

mysqlbinlog –stop-position=”368312″ /var/log/mysql/bin.123456

| mysql -u root -pmypwd

mysqlbinlog –start-position=”368315″ /var/log/mysql/bin.123456

| mysql -u root -pmypwd

上面的第1行將恢復到停止位置為止的所有事務。下一行將恢復從給定的起始位置直到二進位日誌結束的所有事務。因為mysqlbinlog的輸出包括每個SQL語句記錄之前的SET TIMESTAMP語句,恢復的數據和相關MySQL日誌將反應事務執行的原時間。

如何將linux中mysql備份恢復

一般是即時備份。做主從。或者是每天增量備份。

本文是在linux下,mysql 4.1.14版本下測試的,經過適當修改可能適合mysql 4.0,5.0及其其他版本.

本文適合於沒有啟動複製功能的mysql,如果啟動了複製,可能不需要採取這種備份策略或者需要修改相關參數.

每個人的備份策略都可能不同,所以請根據實際情況修改,做到舉一反三,不要照搬照抄,可能會造成不必要的損失.

希望你明白這個腳本要幹什麼工作!

腳本描述

每7天備份一次所有數據,每天備份binlog,也就是增量備份.

(如果數據少,每天備份一次完整數據即可,可能沒必要做增量備份)

作者對shell腳本不太熟悉,所以很多地方寫的很笨 :)

開啟 bin log

在mysql 4.1版本中,默認只有錯誤日誌,沒有其他日誌.可以通過修改配置打開bin log.方法很多,其中一個是在/etc/my.cnf中的mysqld部分加入:

[mysqld]

log-bin

這個日誌的主要作用是增量備份或者複製(可能還有其他用途).

如果想增量備份,必須打開這個日誌.

對於資料庫操作頻繁的mysql,這個日誌會變得很大,而且可能會有多個.

在資料庫中flush-logs,或者使用mysqladmin,mysqldump調用flush-logs後並且使用參數delete-master-logs,這些日誌文件會消失,併產生新的日誌文件(開始是空的).

所以如果從來不備份,開啟日誌可能沒有必要.

完整備份的同時可以調用flush-logs,增量備份之前flush-logs,以便備份最新的數據.

完整備份腳本

如果資料庫數據比較多,我們一般是幾天或者一周備份一次數據,以免影響應用運行,如果數據量比較小,那麼一天備份一次也無所謂了.

#!/bin/sh

BakDir=/backup/mysql

LogFile=/backup/mysql/mysqlbak.log

DATE=`date +%Y%m%d`

echo ” ” $LogFile

echo ” ” $LogFile

echo “——————————————-” $LogFile

echo $(date +”%y-%m-%d %H:%M:%S”) $LogFile

echo “————————–” $LogFile

cd $BakDir

DumpFile=$DATE.sql

GZDumpFile=$DATE.sql.tgz

mysqldump –quick –all-databases –flush-logs

–delete-master-logs –lock-all-tables

$DumpFile

echo “Dump Done” $LogFile

tar czvf $GZDumpFile $DumpFile $LogFile 21

echo “[$GZDumpFile]Backup Success!” $LogFile

rm -f $DumpFile

#delete previous daily backup files:採用增量備份的文件,如果完整備份後,則刪除增量備份的文件.

cd $BakDir/daily

rm -f *

cd $BakDir

echo “Backup Done!”

echo “please Check $BakDir Directory!”

echo “copy it to your local disk or ftp to somewhere !!!”

ls -al $BakDir

上面的腳本把mysql備份到本地的/backup/mysql目錄,增量備份的文件放在/backup/mysql/daily目錄下.

注意:上面的腳本並沒有把備份後的文件傳送到其他遠程計算機,也沒有刪除幾天前的備份文件:需要用戶增加相關腳本,或者手動操作.

增量備份

增量備份的數據量比較小,但是要在完整備份的基礎上操作,用戶可以在時間和成本上權衡,選擇最有利於自己的方式.

增量備份使用bin log,腳本如下:

#!/bin/sh

#

# mysql binlog backup script

#

/usr/bin/mysqladmin flush-logs

DATADIR=/var/lib/mysql

BAKDIR=/backup/mysql/daily

###如果你做了特殊設置,請修改此處或者修改應用此變數的行:預設取機器名,mysql預設也是取機器名

HOSTNAME=`uname -n`

cd $DATADIR

FILELIST=`cat $HOSTNAME-bin.index`

##計算行數,也就是文件數

COUNTER=0

for file in $FILELIST

do

COUNTER=`expr $COUNTER + 1 `

done

NextNum=0

for file in $FILELIST

do

base=`basename $file`

NextNum=`expr $NextNum + 1`

if [ $NextNum -eq $COUNTER ]

then

echo “skip lastest”

else

dest=$BAKDIR/$base

if(test -e $dest)

then

echo “skip exist $base”

else

echo “copying $base”

cp $base $BAKDIR

fi

fi

done

echo “backup mysql binlog ok”

增量備份腳本是備份前flush-logs,mysql會自動把內存中的日誌放到文件里,然後生成一個新的日誌文件,所以我們只需要備份前面的幾個即可,也就是不備份最後一個.

因為從上次備份到本次備份也可能會有多個日誌文件生成,所以要檢測文件,如果已經備份過,就不用備份了.

注:同樣,用戶也需要自己遠程傳送,不過不需要刪除了,完整備份後程序會自動生成.

訪問設置

腳本寫完了,為了能讓腳本運行,還需要設置對應的用戶名和密碼,mysqladmin和mysqldump都是需要用戶名和密碼的,當然可以寫在腳本中,但是修改起來不太方便,假設我們用系統的root用戶來運行此腳本,那麼我們需要在/root(也就是root用戶的home目錄)創建一個.my.cnf文件,內容如下

[mysqladmin]

password =password

user= root

[mysqldump]

user=root

password=password

注:設置本文件只有root可讀.(chmod 600 .my.cnf )

此文件說明程序使用mysql的root用戶備份數據,密碼是對應的設置.這樣就不需要在腳本里寫用戶名和密碼了.

自動運行

為了讓備份程序自動運行,我們需要把它加入crontab.

有2種方法,一種是把腳本根據自己的選擇放入到/etc/cron.daily,/etc/cron.weekly這麼目錄里.

一種是使用crontab -e放入到root用戶的計劃任務里,例如完整備份每周日凌晨3點運行,日常備份每周一-周六凌晨3點運行.

我把linux下的mysql文件夾拷貝了下來,想在另一台linux下的mysql上恢複數據,多個資料庫文件,出現1146錯誤

項目上 MySQL 還原 SQL 備份經常會碰到一個錯誤如下,且通常出現在導入視圖、函數、存儲過程、事件等對象時,其根本原因就是因為導入時所用賬號並不具有SUPER 許可權,所以無法創建其他賬號的所屬對象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常見場景:1. 還原 RDS 時經常出現,因為 RDS 不提供 SUPER 許可權;2. 由開發庫還原到項目現場,賬號許可權等有所不同。

處理方式:

1. 在原庫中批量修改對象所有者為導入賬號或修改 SQL SECURITY 為 Invoker;2. 使用 mysqldump 導出備份,然後將 SQL 文件中的對象所有者替換為導入賬號。

二、問題原因我們先來看下為啥會出現這個報錯,那就得說下 MySQL 中一個很特別的許可權控制機制,像視圖、函數、存儲過程、觸發器等這些數據對象會存在一個 DEFINER 和一個 SQL SECURITY 的屬性,如下所示:

–視圖定義CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW v_test

–函數定義CREATE DEFINER=`root`@`%` FUNCTION `f_test()` RETURNS varchar(100) SQL SECURITY DEFINER

–存儲過程定義CREATE DEFINER=`root`@`%` PROCEDURE `p_test`() SQL SECURITY DEFINER

–觸發器定義CREATE DEFINER=`root`@`%` trigger t_test

–事件定義CREATE DEFINER=`root`@`%` EVENT `e_test`

DEFINER:對象定義者,在創建對象時可以手動指定用戶,不指定的話默認為當前連接用戶;

SQL SECURITY:指明以誰的許可權來執行該對象,有兩個選項,一個為 DEFINER,一個為 INVOKER,默認情況下系統指定為 DEFINER;DEFINER:表示按定義者的許可權來執行; INVOKER:表示按調用者的許可權來執行。

如果導入賬號具有 SUPER 許可權,即使對象的所有者賬號不存在,也可以導入成功,但是在查詢對象時,如果對象的 SQL SECURITY 為 DEFINER,則會報賬號不存在的報錯。ERROR 1449 (HY000): The user specified as a definer (‘root’@’%’) does not exist

改寫好處:1. 可以避免還原時遇到 DEFINER 報錯相關問題;2. 根據輸出信息知道備份是否正常進行,防止備份中遇到元數據鎖無法獲取然後一直卡住的情況。

原創文章,作者:HROYY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/313551.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HROYY的頭像HROYY
上一篇 2025-01-07 09:43
下一篇 2025-01-07 09:43

相關推薦

  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • 如何在樹莓派上安裝Windows 7系統?

    隨著樹莓派的普及,許多用戶想在樹莓派上安裝Windows 7操作系統。 一、準備工作 在開始之前,需要準備以下材料: 1.樹莓派4B一台; 2.一張8GB以上的SD卡; 3.下載並…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 分銷系統開發搭建

    本文主要介紹如何搭建一套完整的分銷系統,從需求分析、技術選型、開發、部署等方面進行說明。 一、需求分析 在進行分銷系統的開發之前,我們首先需要對系統進行需求分析。一般來說,分銷系統…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28

發表回復

登錄後才能評論