mysql中主键不能是汉字吗_MySQL中的主键问题和赋权限问题

原标题:MySQL中的主键问题和赋权限问题

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的状况。

ALTERTABLEcsvmysql ADDPRIMARYKEY(id);

ALTERTABLEcsvmysql CHANGEid id INT(10)NOTNULLAUTO_INCREMENT=1;

删除自增长的主键id

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

ALTERTABLEcsvmysql CHANGEid id INT(10);//删除自增长

ALTERTABLEcsvmysql DROPPRIMARYKEY;//删除主建

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’;*/

小结

希望通过上面的操作能帮助大家。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值