① 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 来快速备份。