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的状况。
ALTERTABLEcsvmysqlADDPRIMARYKEY(id);
ALTERTABLEcsvmysqlCHANGEid idINT(10)NOTNULLAUTO_INCREMENT=1;
删除自增长的主键id
先删除自增长再删除主键。
ALTERTABLEcsvmysqlCHANGEid idINT(10);//删除自增长
ALTERTABLEcsvmysqlDROPPRIMARYKEY;//删除主建
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地址、机器名字、域名。也可以用’%’表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。
实际操作
给来自192.168.10.10的用户root分配可对数据库test的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
给来自192.168.10.10的用户root分配可对数据库test所有表进行所有操作的权限,并设定口令为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’;*/
小结
希望通过上面的操作能帮助大家。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。
领取专属 10元无门槛券
私享最新 技术干货