mysql访问users_mysql 访问控制和用户管理

mysql 访问控制和用户管理

目的:确保数据的安全。用户的访问权限不能多也不能少。

root对数据库有完全的控制。

在日常工作中,不要使用root,而是使用有限权限的一系列账户,根据使用者的身份,给予不同的权限。

select user(); 查看当前用户;

SELECT DISTINCT CONCAT('User:''',user,'''@''',host,''';') AS query FROM mysql.user;

设定了一个查看所有的用户的格式:简单的写法是select user, host from mysql.user;

备注: mysql数据库有一个user表,  储存了user的信息。

创建用户

CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';

username是创建的用户名

hostname是可选的。可以localhost, 具体的ip地址,或通配符%代表任意ip地址。

identified by后面的'password'可以是空字符串,代表无密码。

创建完成后,退出控制台后,再使用mysql -u username -p进入

后续,

create database xxx

use xxx

create table lists (...);

再然后是重要的grant,授权:

grant 权限列表 on 数据库.数据表 to 用户名@访问主机;

create user创建的用户只能登陆 MySQL Server, 不能做其他事情。只有做了相关授权后,才行。

*.*表示:数据库名.表名

例子:

GRANT ALL PRIVILEGES ON *.* TO 'xxx'@'223.72.101.173' WITH GRANT OPTIon;

show grants for xxx@xxx

显示一个用户的特权。

mysql> show grants fortest_user@localhost;

+-----------------------------------------------+

| Grants for test_user@localhost |

+-----------------------------------------------+

| GRANT USAGE ON *.* TO `test_user`@`localhost` |

+-----------------------------------------------+

usage表示根本没有权限。

rename user xxx@xxx to yyy@yyy;

改名。

revoke xxx on *.* from xxx@xxx

撤销某个功能的使用权限。

revoke select on test2.* from test_user@localhost;

各种权限可以看权限表。

删除用户

进入root

select concat(user, host) from mysql.user; 查看mysql数据库中的user表格。

然后选择要删除的用户, drop user username@host

同时授权也删除了

更改用户登陆密码

改之前要留意:

谁在用这个账户。

什么应用程序被这个账户操作?If you change the password without changing the connection string of the application that is using the user account, the application will not be able to connect to the database server.

2种方法:

set password for test_user@localhost = "123456"

ALTER USER dbadmin@localhost IDENTIFIED BY 'littlewhale';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是 PHP + MySQL 实现管理员和普通用户登录的示例代码: 1. 用户信息表结构设计 ```mysql CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `user_type` enum('admin','normal') NOT NULL DEFAULT 'normal', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 2. 登录页面代码 ```php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Page</title> </head> <body> <h2>Login Page</h2> <form action="login.php" method="post"> <label>Username:</label> <input type="text" name="username"><br> <label>Password:</label> <input type="password" name="password"><br> <input type="submit" value="Login"> </form> </body> </html> ``` 3. 登录验证代码 ```php <?php // 连接数据库 $conn = mysqli_connect('localhost', 'root', 'password', 'test'); if (!$conn) { die('Connect failed: ' . mysqli_connect_error()); } // 获取用户名和密码 $username = $_POST['username']; $password = $_POST['password']; // 对用户名和密码进行过滤,避免 SQL 注入等攻击 $username = mysqli_real_escape_string($conn, $username); $password = mysqli_real_escape_string($conn, $password); // 查询用户信息 $sql = "SELECT * FROM `users` WHERE `username`='$username'"; $result = mysqli_query($conn, $sql); // 检查用户名是否存在 if (mysqli_num_rows($result) == 0) { echo 'Username does not exist!'; } else { // 检查密码是否匹配 $row = mysqli_fetch_assoc($result); if ($row['password'] != $password) { echo 'Incorrect password!'; } else { // 将用户信息存储在 session 中 session_start(); $_SESSION['username'] = $username; $_SESSION['user_type'] = $row['user_type']; // 跳转到相应的页面 if ($row['user_type'] == 'admin') { header('Location: admin.php'); } else { header('Location: normal.php'); } } } // 关闭数据库连接 mysqli_close($conn); ?> ``` 4. 管理员页面代码 ```php <?php // 开启 session session_start(); // 检查登录状态 if (!isset($_SESSION['username']) || $_SESSION['user_type'] != 'admin') { header('Location: login.php'); exit(); } // 输出欢迎信息 echo 'Welcome, ' . $_SESSION['username'] . ' (admin)!'; ?> ``` 5. 普通用户页面代码 ```php <?php // 开启 session session_start(); // 检查登录状态 if (!isset($_SESSION['username']) || $_SESSION['user_type'] != 'normal') { header('Location: login.php'); exit(); } // 输出欢迎信息 echo 'Welcome, ' . $_SESSION['username'] . ' (normal user)!'; ?> ``` 以上是一个简单的示例代码,具体实现方式可以根据需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值