MySQL中的主键问题和赋权限问题

浏览: 1837

今天分享一下我所学习的MySQL中的主键问题,和赋权限问题。

MySQL中的主键问题

1、Mysql的两种主键。

Primary key 和not null auto_incriment
在建立mysql表时,给一个字段添加了主键primary key

在insert数据时可以不用insert主键,mysql会自动添加0,但是在第二次insert时没有填写值mysql数据库还是默认添加0,会导致有重复的主键,这是不可以的。所有在定义了primary key时,在insert数据时要给主键填写值。

在建立mysql表时,给一个字段添加了主键not null auto_increment=1;

这也是一个主键。是自增长的以1为开始。这个字段是可以不用填写值的,mysql数据库会自动给填写值,不会出现primary key的状况。

ALTER TABLE csvmysql ADD PRIMARY KEY(id);
ALTER TABLE csvmysql CHANGE id id INT(10) NOT NULL AUTO_INCREMENT=1;

2、删除自增长的主键id

先删除自增长再删除主键。

ALTER TABLE csvmysql CHANGE id id INT(10);//删除自增长
ALTER TABLE csvmysql DROP PRIMARY KEY;//删除主建

MySQL给用户赋值权限

因为遇到了问题:(SQLException: access denied for @’localhost’ (using password: no))

下面先看一下MySQL的权限说明:

mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。

当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。

当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。

用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%’表示从任何地址连接。

‘连接口令’不能为空,否则创建失败。

 

看一下实际操作:

mysql>grant select,insert,update,delete,create,drop on test.employee to root@192.168.10.10 identified by ‘123’;

给来自192.168.10.10的用户root分配可对数据库test的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。

 

mysql>grant all privileges on test.* to root@192.168.10.10 identified by ‘123’;

给来自192.168.10.10的用户root分配可对数据库test所有表进行所有操作的权限,并设定口令为123。

 

mysql>grant all privileges on *.* to root@192.168.10.10 identified by ‘123’;

给来自192.168.10.10的用户root分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

 

mysql>grant all privileges on *.* to root@localhost identified by ‘123’;

给本机用户root分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

 

我新建了一个表csvmysql,现在要给test数据库的csvmysql数据表赋权限:

mysql>grant all on test.* to root@’localhost’ identified by ‘2017’;

然后禁止read_only模式。

mysql>set global read_only=off ;/*set global read_only=0; 禁止read_only模式*/

set global read_only=on/off是DBA经常用的一个操作:进行主备切换的时候,一般都会先对主库进行只读操作(on),然后主备同步完成后,再把备库置为可读写(off)。这样可以避免切换的过程中双写引起脏数据。

mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效。

flush privileges;/* SET SESSION binlog_format = ‘ROW’; SET GLOBAL binlog_format = ‘ROW’;*/

上面就是MySQL中主键问题和赋权限问题,希望对你们有帮助。

希望通过上面的操作能帮助大家解决插入数据出现的一些问题。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。

如果想快速联系我,欢迎关注微信公众号:AiryData。


推荐 0
本文由 Airy 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

求关注求推荐啊。

要回复文章请先登录注册