① sql執行錯誤怎麼辦
MySQL軟體所提供的許可權(mysql.user、mysql.db、mysql.host)
(1) 系統表mysql.user
user許可權表中欄位分為四類: 用戶欄位、許可權欄位、安全欄位和資源控制欄位。用戶欄位
許可權欄位
安全欄位
- # 查看是否支持ssl標准show variables like 'have_openssl';123
資源控制欄位
用戶欄位
mysql.db表許可權欄位
系統表mysql.tables_priv表結構
mysql.tables_priv表結構.png
mysql.tables_priv表結構.png
系統表mysql.columns_priv的表結構
用戶機制
(1) 登錄和退出MySQL軟體的完整命令- # 登錄mysql -h 127.0.0.1 -u root -p# 退出(q)exit|quit12345
執行CREATE USER語句來創建用戶賬戶
- create user 'mazaiting'@'localhost' identified by '123456';12
執行INSERT語句來創建用戶
- insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)values('localhost', 'linghaoyu', password('linghaoyu'),'','','');# 使新建用戶生效flush privileges;12345
執行GRANT語句來創建用戶
- grant select on company.t_deptto 'wangxingqin'@'localhost' identified by 'wangxingqin';123
修改超級許可權用戶賬戶密碼
- # 通過mysqladmin命令修改root用戶密碼mysqladmin -u root -p password "123456"# 通過SET命令修改密碼set password=password("123456");# 更新系統表mysql.user數據記錄修改root用戶密碼update user set password=password("123456")where user="root" and host="localhost";12345678
- # 創建用戶grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by 'mazaiting'with grant option;# 通過grant命令修改用戶密碼grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by '123456';# 通過set命令修改用戶密碼set password for 'mazaiting'@'localhost'=password("123456");# 更新系統表mysql.user數據記錄修改用戶密碼update user set password=password("mazaiting")where user='mazaiting' and host='localhost';# 登錄當前用戶,並使用set命令修改密碼set password=password("123456");123456789101112131415
通過DROP USER語句刪除普通用戶
- drop user 'mazaiting'@'localhost';12
刪除系統表mysql.user數據記錄實現刪除用戶賬號
- # 選擇mysql資料庫use mysql;# 刪除用戶delete from user where user='mazaiting' and host='localhost';12345
許可權管理
(1) 對用戶進行授權- # 創建用戶grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by 'mazaiting'with grant option;# 查詢表數據記錄select host,user,password,select_priv,update_priv,grant_priv,drop_privfrom mysql.userwhere user='mazaiting' G12345678910
- show grants for 'mazaiting'@'localhost' G12
- # 回收用戶的查詢許可權revoke select on *.* from 'mazaiting'@'localhost';# 回收用戶的全部許可權revoke all privileges, grant optionfrom 'mazaiting'@'localhost
用戶欄位.png
許可權欄位.png
安全欄位.png
資源控制.png
系統表mysql.user中的所有資源欄位的默認值為0,表示沒有任何限制。
(2) 系統表mysql.db和mysql.host
在系統資料庫mysql中,許可權表除了表user外,還有表db和表host,這兩張表都存儲了某個用戶對資料庫的許可權。
mysql.db表.png
mysql.host表
mysql.host表.png
許可權欄位.png
(3)其他許可權表
在系統資料庫mysql中,除了上述許可權表外,還有表tables_priv和columns_priv,其中標tables_priv用來實現單個表的許可權設置,表columns_priv用來實現單個欄位列的許可權設置。
columns_priv的表結構png
(2) 創建普通用戶賬戶
(3) 利用超級許可權用戶root修改用戶賬戶密碼
(4) 利用擁有超級許可權用戶root修改普通用戶賬戶密碼
(5) 刪除普通用戶賬戶
(2) 查看用戶所擁有許可權
(3) 收回用戶所擁有許可權
② 你好,SQL修改錯了,修改前沒有備份,請問怎麼還原到修改前的數據,你知道嗎可以給聯系方式我請教一下
哦,god save you, 業務生產庫動錯的很麻煩啊,你的庫的日誌模式是完整模式嗎full,
以下轉載:
DB2中可以使得資料庫回復到指定的時間點,SQL Server資料庫的Recovery Model為full 或者Bulk 的時候,是可以從日誌來恢復資料庫的。實際上日誌中記錄的一條一條的transact sql語句,恢復資料庫的時候會redo這些sql語句。
前提條件:myBBS是資料庫test中的一個表,
資料庫test的Recovery Model為Full,Auto Close,Auto Shrink兩個選項未選中。
資料庫test的data files和log files均為默認的自動增長狀態。
A:2004/10/13,16:00進行資料庫備份,backup database test to disk='d:\db\1600.bak' with init
B:2004/10/14,13:00對資料庫進行了update,delete等操作;
C:2004/10/15,18:00使用delete mybbs where id>300時,語句誤寫成delete mybbs,因而刪除了表mybbs中的所有數據。
現在在C點,C點對資料庫進行了誤操作,我們希望資料庫能夠恢復到C之前的狀態,比如恢復到10月15日17:59分的狀態。
要恢復資料庫B點,使用的是A點備分的資料庫1600.bak;而使用的日誌備分是最新的備分1820.logs;因而進行如下操作:
--備分日誌:
BACKUP LOG test TO DISK='d:\1820.logs' WITH INIT
--恢復資料庫1600.bak,使用WITH NORECOVERY參數:
RESTORE DATABASE test from disk='d:\db\1640.bak' WITH NORECOVERY
--使用日誌恢復資料庫到10月15日17:59分:
RESTORE LOG test
FROM disk='d:\1820.logs' WITH RECOVERY,STOPAT='10/15/2004 17:59'
上面的三條Transact SQL語句的對應過程:
1.恢復資料庫到A點;
2.執行A-B之間的log記錄,把資料庫恢復到B點.
這樣就恢復資料庫到了指定的時間點。如果恢復不成功,可能的原因是:1.未使用正確的備分資料庫;2.資料庫選項選中了Auto Shrink.
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/davillua/archive/2004/10/16/138999.aspx
③ sql 2005 不小心執行修改事件 怎麼恢復
例1:使用時間戳將日誌進行時點恢復
使用以前的完全備份恢復資料庫,並使其為日誌恢復做好准備。
RESTORE DATABASE pubs FROM DISK = N'C:\Backups\Fullbackup.bak' WITH NORECOVERY
現在您可以將日誌前滾到合適的時間點,並使資料庫可供使用。請注意,STOPAT在資料庫正在執行大容量日誌時禁止執行。
RESTORE LOG pubs FROM DISK=N'C:\Backups\Logbackup.bak' WITH RECOVERY,STOPAT='02/11/2002 17:35:00'
例2:使用資料庫標記將日誌恢復到預定義時間點的語句
在事務日誌中置入一個標記。請注意,被標記的事務至少須提交一個更新,以標記該日誌。
BEGIN TRAN MyMark WITH MARK
UPDATE pubs.dbo.LastLogMark SET MarkTime = GETDATE()
COMMIT TRAN MyMark
按照您常用的方法備份事務日誌。
BACKUP LOG pubs TO DISK='C:\Backups\Fullbackup.bak' WITH INIT
現在您可以將資料庫恢復至日誌標記點。首先恢復資料庫,並使其為接受日誌恢復做好准備。
RESTORE DATABASE pubs FROM DISK=N'C:\Backups\Fullbackup.bak' WITH NORECOVERY
現在將日誌恢復至包含該標記的時間點,並使其可供使用。請注意,STOPAT在資料庫正在執行大容量日誌時禁止執行。
RESTORE LOG pubs FROM DISK=N'C:\Backups\Logbackup.bak' WITH RECOVERY,
STOPAT='02/11/2002 17:35:00'
—Microsoft SQL Server 開發團隊
④ sql恢復修改前數據
1、首先運行Recovery for SQL Server。
⑤ 今天用SQL SERVER修改了批量21W條數據,突然發現自己改錯了,怎樣返回上一步
前提條件
--將資料庫的恢復模式(Recoverymode)設置為「完整(Full)」
--此操作可以在SQLServerManagementStudio中,選擇資料庫,滑鼠右鍵,屬性後,在選項標簽中進行設置。
USE[master]
GO
ALTERDATABASE[test]SETRECOVERYFULLWITHNO_WAIT
GO
--完整備份資料庫
backupdatabasetesttodisk='e: est_20130704.dat'
GO
已為資料庫'test',文件'Test'(位於文件1上)處理了376頁。
已為資料庫'test',文件'Test_log'(位於文件1上)處理了3頁。
BACKUPDATABASE成功處理了379頁,花費1.151秒(2.571MB/秒)。
測試數據.
USE[test]
GO
--創建測試表
CREATETABLEtest_br_table(
IDint,
VALVARCHAR(10),
PRIMARYKEY(ID)
);
GO
INSERTINTOtest_br_tableVALUES(1,'TEST1');
INSERTINTOtest_br_tableVALUES(2,'TEST2');
INSERTINTOtest_br_tableVALUES(3,'TEST3');
GO
SELECTGETDATE()
GO
-----------------------
2013-07-0416:44:12.393
(1行受影響)
--假設誤操作,刪除所有的數據了.
DELETEFROMtest_br_table
GO
(3行受影響)恢復
USE[master]
GO
--步驟1.備份當前資料庫的事務日誌:
BACKUPLOG[Test]TOdisk=N'e: est_log'WITHNORECOVERY
GO
已為資料庫'Test',文件'Test_log'(位於文件1上)處理了9頁。
BACKUPLOG成功處理了9頁,花費0.046秒(1.486MB/秒)。
--步驟2.恢復一個誤刪除之前的完全備份:
RESTOREDATABASE[Test]FROMDISK=N'e: est_20130704.dat'WITHNORECOVERY,REPLACE
GO
已為資料庫'Test',文件'Test'(位於文件1上)處理了376頁。
已為資料庫'Test',文件'Test_log'(位於文件1上)處理了3頁。
RESTOREDATABASE成功處理了379頁,花費0.828秒(3.574MB/秒)。
--步驟3.將資料庫恢復至誤刪除之前的時間點:
RESTORELOG[Test]FROMDISK=N'e: est_log'WITHSTOPAT=N'2013-07-0416:44:12.393',RECOVERY
GO
已為資料庫'Test',文件'Test'(位於文件1上)處理了0頁。
已為資料庫'Test',文件'Test_log'(位於文件1上)處理了9頁。
RESTORELOG成功處理了9頁,花費0.013秒(5.258MB/秒)。
核對數據.
use[Test]
GO
SELECT*FROMtest_br_table
GO
IDVAL
---------------------
1TEST1
2TEST2
3TEST3
(3行受影響)
⑥ sql語句錯誤,怎麼改呀
sql="select
top
2
*
from
Procts
where
"&session("sortID")&"=rs("SortPath"))
and
(ID<>"request.QueryString("ID"))"
,最後加個引號
⑦ SQL 語句錯誤如何修改啊
參考以下方式填寫,ORACLE寫法跟SQL有點區別的
begin
sys.dbms_job.submit(job => :job,
what => 'PRC_T;',
next_date => to_date('06-05-2015 23:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'TRUNC(sysdate) + 1 + 23/(24)');
commit;
end;
⑧ 在sql資料庫,我插入一條數據有誤,編號錯了,和前面的重復,要怎麼修改呢
1.直接去資料庫修改。2.如果能夠單獨查詢出來這條記錄,就用Update去修改,條件就是你查詢時的條件。3。如果不能單獨查詢出來的,可以新添加個欄位,錄入信息來區分,update時以新欄位來做條件,完了後再刪除新欄位。
⑨ 請教高手問題啊,我寫的一段sql語句,但是有錯誤,怎麼改啊,謝謝啊,在線等
你的Employee表中的 Emp_Id同時是db_room和House兩個表的外鍵,也就是說如果你要刪除Employee中的數據,就要先刪除db_room和House中與Emp_ID相關的數據,再刪除Employee中的,後面的Update也是一樣。
如果程序不做修改,你可以在資料庫管理器中將FK__House__Emp_Id__014935CB約束的刪除和更新都設置為級聯。
⑩ 本人不小心將Sqlserver2005某張表中修改了數據,怎麼還原
1、找備份文件還原到另一個資料庫名,然後導出數據來覆蓋或更新。
2、如果沒有備份文件只有回憶一下修改的步驟或修改的內容,看不能不返向操作來處理。如果是刪除那就無法恢復,
3、建議在修改數據前備份資料庫,如果不想備份,可能用 select * into new_table from table 來快速備份。