MySQL软件所提供的权限(mysqluser、mysqldb、mysqlhost)
(1) 系统表mysqluser
user权限表中字段分为四类: 用户字段、权限字段、安全字段和资源控制字段。
用户字段
用户字段png
权限字段
权限字段png
安全字段
安全字段png
# 查看是否支持ssl标准show variables like 'have_openssl';123资源控制字段
资源控制png
系统表mysqluser中的所有资源字段的默认值为0,表示没有任何限制。
(2) 系统表mysqldb和mysqlhost
在系统数据库mysql中,权限表除了表user外,还有表db和表host,这两张表都存储了某个用户对数据库的权限。
用户字段
mysqldb表
mysqldb表png
mysqlhost表
mysqlhost表png
权限字段
权限字段png
(3)其他权限表
在系统数据库mysql中,除了上述权限表外,还有表tables_priv和columns_priv,其中标tables_priv用来实现单个表的权限设置,表columns_priv用来实现单个字段列的权限设置。
系统表mysqltables_priv表结构
mysqltables_priv表结构png
mysqltables_priv表结构png
系统表mysqlcolumns_priv的表结构
columns_priv的表结构png
用户机制
(1) 登录和退出MySQL软件的完整命令
# 登录mysql -h 127001 -u root -p# 退出(\q)exit|quit12345(2) 创建普通用户账户
执行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 companyt_deptto 'wangxingqin'@'localhost' identified by 'wangxingqin';123(3) 利用超级权限用户root修改用户账户密码
修改超级权限用户账户密码
# 通过mysqladmin命令修改root用户密码mysqladmin -u root -p password "123456"# 通过SET命令修改密码set password=password("123456");# 更新系统表mysqluser数据记录修改root用户密码update user set password=password("123456")where user="root" and host="localhost";12345678(4) 利用拥有超级权限用户root修改普通用户账户密码
# 创建用户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");# 更新系统表mysqluser数据记录修改用户密码update user set password=password("mazaiting")where user='mazaiting' and host='localhost';# 登录当前用户,并使用set命令修改密码set password=password("123456");123456789101112131415(5) 删除普通用户账户
通过DROP USER语句删除普通用户
drop user 'mazaiting'@'localhost';12删除系统表mysqluser数据记录实现删除用户账号
# 选择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 mysqluserwhere user='mazaiting' \G12345678910(2) 查看用户所拥有权限
show grants for 'mazaiting'@'localhost' \G12(3) 收回用户所拥有权限
# 回收用户的查询权限revoke select on from 'mazaiting'@'localhost';# 回收用户的全部权限revoke all privileges, grant optionfrom 'mazaiting'@'localhost可能是权限不足,不能创建表格,或者:当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的。像这种不能创建一个frm
文件的报错好像暗示着 *** 作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,事实上,这个mysql报错已经被报告是一个mysql本身的bug并出现在mysql
开发者列表当中很多年了,然而这似乎又是一种误导。在很多实例中,这种错误的发生都是因为mysql一直以来都不能很好的支持的关系的问题,
更不幸的是它也并没有指明到底是哪一个问题会导致上面那种错误,下面我把导致这个可怕
的150错误的常见原因列出来了,并且我以可能性的大小作了排序已知的原因:1,两个字段的类型或者大小不严格匹配,例如,如果一个是INT(10),
那么外键也必须设置成INT(10),
而不是
INT(11)
也不能是TINYINT
你得使用
SHOW
命令来查看字段的大小,因为一些查询浏览器有时候把
int(10)
和int(11)都显示为integer。另外,你还必须确定两个字段是否一个为
SIGNED,而另一个又是UNSIGNED,
这两字段必须严格地一致匹配。2,
你试图引用的其中一个外键没有建立起索引,或者不是一个primary
key
,
如果其中一个不是primary
key
的放,你必须为它创建一个索引。3,
外键的名字是一个已经存在的一个键值了,这个时候,你应该检查你的数据库以确保外健名字是唯一的,或者你在键名后面加上几个随机的字符以测试是否是这个原因。4,
其中一个或者两个表是MyISAM引擎的表,若想要使用外键约束,必须是InnoDB引擎,(实际上,如果两个表都是MyISAM
引擎的,这个错误根本不会发生,但也不会产生外键),你可以通过查询浏览器来设置表的引擎类型5,
你可能设置了ON
DELETE
SET
NULL,
但是相关的键的字段又设置成了NOTS
NULL
值。你可能通过修改cascade
的属性值或者把字段属性设置成
allow
null
来搞定这个bug6,
请确定你的Charset
和
Collate
选项在表级和字段级上的一致7,
你可能设置为外键设置了一个默认值,如
default=08,
在这个关系里面,其中的一个字段是一个混合键值中的一个,它没有自己独立的索引,这时,你必须为它创建一个独立的索引。9,
ALTER
声明中有语法错误1、外键的引用类型不一样,主键是int外键是char2、找不到主表中
引用的列3、主键和外键的字符编码不一致4还有要建立外键的话,要先建立索引。没有建立索引也会出错。我的问题解决方案是在sql后面加上了如下句话,ok!成功导入脚本ENGINE=INNODB
DEFAULT
CHARSET=utf8;charset对应的换成你的主键表的字符集!
mysql 版本不对……
换个mysql 5x的试下。
或者试这样:
CREATE TABLE `tbl_online` (
`auctionID` int( 6 ) unsigned NOT NULL default '0',
`userID` int( 6 ) unsigned NOT NULL default '0',
`userName` varchar( 100 ) NOT NULL default '',
`actionDate` timestamp NOT NULL,
`bz` varchar( 100 ) NOT NULL default ''
);
一:数据库引擎没有启动:\x0d\ 开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动\x0d\二:启动行远程连接设置没有打开\x0d\1指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器” \x0d\2在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器” \x0d\3然后单击展开“数据库引擎”, 选中“远程连接”,在右边选中“本地连接和远程连接”, \x0d\再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息: “直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回 \x0d\4展开“数据库引擎”, 选中“服务”,在右边单击“停止”,等到 MSSQLSERVER 服务停止, 然后单击“启动”,重新启动MSSQLSERVER 服务。
以上就是关于SQL执行错误怎么办全部的内容,包括:SQL执行错误怎么办、SQL执行错误#1193从数据库Unknown system variable 'SQL_MODE'、MYSQL数据库,创建时执行语句出错,要怎么改呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)