在网站上做承诺书,wordpress插件开发工具,中迅做网站是模板站吗,怎样才能建一个网站目录
一、用户管理
二、用户
1. 用户信息
2. 创建用户
3. 用户登录测试
4. 删除用户
5. 设置用户远端登录
6. 修改密码
6.1 修改当前用户的密码
6.2 root用户修改指定用户的密码
三、权限
1. 数据库中的各个权限含义
2. 给用户授权
3. 查看用户拥有权限
4. 授权…目录
一、用户管理
二、用户
1. 用户信息
2. 创建用户
3. 用户登录测试
4. 删除用户
5. 设置用户远端登录
6. 修改密码
6.1 修改当前用户的密码
6.2 root用户修改指定用户的密码
三、权限
1. 数据库中的各个权限含义
2. 给用户授权
3. 查看用户拥有权限
4. 授权测试
5. 回收权限 一、用户管理
在以前的文章中都是在root账户进行一系列CURD操作。但是要知道在实际的生产过程中直接使用root账户是存在很大的安全隐患的。此时就需要进行用户管理。
例如在未来使用数据库时并不能直接使用root账户进行数据库操作而是只能使用特定账户操作。这些账户中就别设置了相应的权限限制该账户可以看到哪些数据库以及能够对这个数据库中的表执行何种操作等等。
例如现在mysql中存在msg和emp两个数据库在root账户下 可以对这两个数据库执行任意操作。但是在其他账户比如张三的账户下就只能看到msg数据库并且只能查看这个数据库中的内容无法执行其他操作。
二、用户
1. 用户信息
在mysql中要区分不同的用户就需要对用户做管理。要管理用户就需要在mysql中保存用户的信息。因此mysql中的用户信息其实也是在mysql中特定的表内保存的。
当安装好mysql后这个mysql中就会自带一个mysql数据库 在这个数据库中存在一个user表这个表中保存的就是用户的信息。 查看user表中的信息 这个表中还有很多其他内容这里没有截全大家可以自行登录自己的mysql查看。在这张截图中可以看到两个信息第一个就是host第二个就是user。其中host表示该用户是从哪里登录的而user就是用户名称。后面的一堆内容就是这个用户的权限。
在结尾处还有如下内容 其中圈出来的部分就是经过加密后的用户密码。
因为这里面的内容太多为了方便查看就筛选出需要的内容查看 2. 创建用户
要创建用户一般是使用特定的语句创建。但是上文说了用户数据是保存在表内的。因此如果你愿意你甚至可以就用insert语句插入一个用户。当然这种方法是吃力不讨好的因为user表中的数据很多一个一个的填充列数据是很麻烦的。
创建用户的语法如下所示 其中的用户名就是要创建的用户的名字。登录主机/ip要注意下 如果只是想本地登录就填“localhot”或“127.0.0.1”如果需要远程登录后面介绍一下。至于后面的密码就不必多说了。
注意在创建用户时要将用户名和登录主机用连接中间不能有空格。因为这两个内容合起来才能算是一个用户。
在这里就为大家示范一下 此时其实就创建好一个用户了。
注意如果大家遇到如下这种情况 报错说因为在mysql设置了跳过密码登录因此此时无法创建用户时就可以去新开一个窗口执行“vim /etc/my.cnf”命令进入mysql的配置文件然后将“skip-grant-tables”注释掉。注意在这个过程中不要退出mysql因为此时如果还没有为root账户设置密码就会导致你注释掉免密码登录后无法登录mysql。
因为在这之前大家可以执行“set password for rootlocalhostpassword(密码);”命令提前设置好root账户密码这样在以后的登录中就是用密码登录了。
在创建好新用户后可以执行“flush privileges;”命令刷新一下保证上面的创建用户操作是有效的。
3. 用户登录测试
当用户创建好后就可以用这个用户登录看看了 登录完成后查看一下当前的数据库 可以发现该用户能够看到的数据库的数量就远远少于在root用户下能看到的数据库数量。这其实是因为该用户的权限问题。在这里先不过多赘述到后面再介绍用户的权限设置。
如果windows下也装了mysql就可以在windows中的命令提示符中执行对应的mysql命令尝试登陆。如果你做了这个测试那么此时登陆是无效的。因为该用户中设置了只允许本地登录并不允许远端登录。这里就不再测试了。 4. 删除用户
如果大家想删除一个用户同样的一种简单粗暴的方法就是直接用delete语句删除。当然在用户这里也是有专门的删除用户的语句的 删除方法如上所示。里面的内容都很好理解就不再解释了。同样的这里的用户名和主机名也需要用连接中间不能存在空格。
测试一下删除 此时就将对应用户删除了 5. 设置用户远端登录
在创建用户时可以在登录主机的部分填写一个公网ip用于标识可以让特定的主机从远端登录。但由于大家在此时基本上都只有一台云服务器所以填一个具体的公网ip没有意义。此时有人可能就想既然没有多台linux那在这里填windows的ip地址怎么样这个方法是没有用的。因为windows下的ip地址是一个私网ip当经过多层转发后其实其源地址已经失效填进去没有什么用处。
因此在这里可以在登录主机处填% 填%的含义就是允许任意一台主机从远端登录。
注意虽然在这里使用了%但是在实际生产中基本是严禁使用它的因为允许任意ip登录就意味存在很大的安全问题。因此如果一定要远端登录都是要限定好哪些机器可以远端登录到。
同样的在创建好后执行“flush privileges;”命令刷新一下保证生效。如果大家在windows下安装了mysql就可以到命令提示符中去尝试用新建的用户登录此时应该就是可以登录成功了的。这里就不再演示了。
6. 修改密码
修改密码一共有两种方式分别是修改当前用户的密码和root用户修改指定用户的密码。
6.1 修改当前用户的密码
要修改当前用户的密码可以用如下sql语句 其中后面的password是一个函数。数据库中的用户密码一般都不会明文存储password这个函数就会用一个特定的hash函数帮我们自动加密 6.2 root用户修改指定用户的密码
在root用户下我们也可以修改其他用户的密码。语法如下 例如在这里可以将上面创建的用户密码修改一下 在提示这里出现了一个警告其实是因为这个密码太简单了所以mysql发出了警告。不用管。
同样的因为这些数据其实都是存在表里面的所以也可以用update语句去修改密码。这里就不再演示了。
三、权限
1. 数据库中的各个权限含义 当我们查看mysql库下的user表时可以看到很多列。这些列的含义如下所示 2. 给用户授权
要给用户授权可以使用如下sql语句 在权限列表中可以授予一个权限也可以授予多个权限。当授予多个权限时可以用逗号隔开。如果是想将所有权限都授予指定用户就可以使用“all”。 如果想将一个数据库下的一个对象的权限交给用户可以用指定的库名和对象名。
如果想将一个数据库下的所有对象的权限都交给用户可以用“库名.*”*的含义就是所有对象。
如果想将这个系统中的所有库的所有对象的权限都交给用户可以用“*.*”。
identified by是可选项如果你想在赋权的同时修改用户密码就可以带上。反之则不用带。
当设置好权限后可以执行一下如下语句表示刷新权限保证权限生效。 3. 查看用户拥有权限
直接到user表中一个个的看用户权限是很麻烦的。因此可以采用如下语句查看用户拥有的权限 在这里 就可以查看下root用户的权限 4. 授权测试
为了方便测试首先在root用户下创建如下一个数据库和表 创建好后向里面插入如下数据 在上文中创建了一个tjj用户所以这里就用这个新创建的用户做测试。首先登录这个新创建的用户如果你不知道自己当前使用的是哪个用户可以用“select user();”语句查看 在这个用户下查看数据库 可以看到该用户只能看到很少的几个数据库甚至连刚刚创建的rootDB库都看不见。原因就是当前用户没有能够看到这些库的权限。
首先可以先将rootDB库下的user表的所有权限交给该用户 再在tjj用户下查看数据库 此时就可以看到这个数据库了。然后再查看一下该用户拥有的权限 第一条语句不用管。直接看第二条。观察后可以发现这条语句不就是刚刚赋权的时候的语句么仅仅是在all后面多了一个privileges这个单词的意思是权限。因此翻译过来就是“将rootDB库中的user表的所有权限赋予用户tjjlocalhost”。
tjj用户用户有了权限后就可以对这个操作这个表了 由于是赋予所有权限所以除了insert诸如delete、update、alter等等语句都是可以使用的。这里就不再演示了。
5. 回收权限
如果想回收一个用户的权限就可以使用如下语句 revoke的意思就是撤回。表示将某个库中的某个对象的指定权限从某个用户处撤回。
因此可以尝试将在上文中赋予tjj用户的insert权限回收。在root用户下指定如下语句 再查看该用户的权限 可以看到该用户的权限列表就变成了如图所示。经过观察发现里面少了inset权限。到底是不是这样呢在tjj用户下试一下insert 可以看到此时就报错说没有这个表的insert权限了。当然其他权限还是在的 当然也可以直接回收掉该用户对这个对象的所有权限 查看该用户的权限 此时该用户就没有这个表的任何权限了。
在该用户下查看这个表 可以看到此时就无法用select查看了。同时我们也可以在该用户下查看一下数据库 此时就看不到rootDB库了。
如果再将该库中的user表的select权限赋予该用户 然后再在该用户下查看数据库 此时又可以看见了。
通过上面的测试就可以得出一个结论如果一个普通用户想要看到一个数据库那么该用户至少需要拥有该数据库下的任意一个对象的至少一个权限。