我用的系统是OS X 10.11.5, 使用的mysql版本是5.7.16。其实插入一个用户是操作数据库一个最基本的操作,但是按照网上的方法,各种不行:
mysql> insert into mysql.user(Host,User,Password) values("localhost","zhangyu",password("7806251"));
比如使用这个语句,shell里面会报错:
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
查了一个网上的资料,我还修改了一个叫mysql-default.cnf的配置文件,导致mysql的包初始化把我原来设置的登陆密码给覆盖了,真是得不偿失,我不得不重装mysql。
所以我们就不用insert方法去插入用户了,我们可以使用分配权限的方法的去创建用户:
GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
##“username”替换为将要授权的用户名,比如clientusr;
##“password”替换为clientusr设置的密码;
##locaohost可以改为%,方便你从别的IP登录,如果你是新手,只需要本地数据库,就不用修改了
当你创建完用户之后,你可以给新创建的用户在root模式之下创建一个数据库,新创建的用户可以使用这个数据库,但是它没有权限创建数据库,比如说,我创建一个叫test1的数据库:
create database test1;
#授权zhangyu用户拥有test1数据库的所有权限
grant all privileges on test1.* to zhangyu@localhost identified by '7806251';
mysql> FLUSH PRIVILEGES;
注意最后要使用 FLUSH PRIVILEGES 语句。 这告诉服务器重新加载授权表。如果不使用它,那么将无法使用新的用户帐户连接到MySQL服务器,至少在服务器重新启动后才可以。
当我需要改变用户的登陆密码时,一般的教程一般会教我们使用下面的语句:
but it didn’t work in OS X,而且这行指令还不能出现在CSDN的blog里面!是因为撞库之类的事情吗?所以我不得以用照片的形式传上来了。
我们应该使用:
SET PASSWORD = PASSWORD('7806251');
记住这些指令应该是非常简单的了,但是数据库系统背后的原理到底是什么,还得继续努力学习数据库系统背后的原理。
还有,当我有问题需要搜索的时候,我才发现stackflow是一个神奇的地方,以后应该更多的使用。
谢谢木哥的blog
谢谢fly哥的blog
非常感谢他们