mysql用户只赋予增删改查的权限
时间: 2023-10-13 17:12:44 浏览: 35
可以使用如下SQL语句:
```
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'user_name'@'localhost';
```
其中,`database_name`为需要授权的数据库名称,`user_name`为需要授权的用户名称,`localhost`为用户连接的主机名。
该语句将授予用户`user_name`对`database_name`数据库中所有表的增删改查权限。如果需要授权的表不止一个,可以使用通配符`*`代替表名,授权所有表。
注意:在实际应用中,应该根据实际需求授予不同的权限,以保障数据库的安全性。
相关问题
mysql给普通用户增删改查自己信息的权限代码
假设您的MySQL数据库中有一个名为`users`的表格,其中包含以下字段:`id`(自增主键)、`username`、`password`、`email`。
以下是给普通用户增删改查自己信息的权限代码示例:
1. 创建用户表格并插入一些数据
```sql
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL
);
INSERT INTO users (username, password, email) VALUES
('user1', 'password1', 'user1@example.com'),
('user2', 'password2', 'user2@example.com');
```
2. 创建普通用户
```sql
CREATE USER '普通用户的用户名'@'%' IDENTIFIED BY '密码';
```
3. 授予普通用户访问`users`表格的权限
```sql
GRANT SELECT, INSERT, UPDATE, DELETE ON `数据库名`.`users` TO '普通用户的用户名'@'%';
```
4. 创建一个视图,只显示当前用户的信息
```sql
CREATE VIEW user_info AS
SELECT * FROM users WHERE username = CURRENT_USER();
```
5. 测试
现在,只允许普通用户访问`user_info`视图,并且只能看到与当前用户相关的信息。例如,`user1`只能看到自己的信息:
```sql
-- 连接到MySQL服务器
mysql -u 普通用户的用户名 -p
-- 查看自己的信息
SELECT * FROM user_info;
```
如果`user1`尝试查看`user2`的信息,将会得到一个错误信息。
mysql➕java实现增删改查
可以使用Java中的JDBC(Java Database Connectivity) API与MySQL数据库进行交互,实现增删改查操作。下面是一个简单的示例代码:
1. 引入MySQL的JDBC驱动包,可以从官网下载或使用Maven进行依赖管理。
2. 使用JDBC连接MySQL数据库,需要指定数据库的URL、用户名和密码。
```java
// 加载驱动类
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, username, password);
```
3. 实现增删改查操作。
```java
// 新增操作
String sql = "INSERT INTO user(name, age) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "Tom");
ps.setInt(2, 20);
ps.executeUpdate();
// 修改操作
String sql = "UPDATE user SET age = ? WHERE name = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 21);
ps.setString(2, "Tom");
ps.executeUpdate();
// 删除操作
String sql = "DELETE FROM user WHERE name = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "Tom");
ps.executeUpdate();
// 查询操作
String sql = "SELECT * FROM user WHERE age > ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 18);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
```
完整代码示例:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class JdbcDemo {
public static void main(String[] args) throws Exception {
// 加载驱动类
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, username, password);
// 新增操作
String sql = "INSERT INTO user(name, age) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "Tom");
ps.setInt(2, 20);
ps.executeUpdate();
// 修改操作
sql = "UPDATE user SET age = ? WHERE name = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, 21);
ps.setString(2, "Tom");
ps.executeUpdate();
// 删除操作
sql = "DELETE FROM user WHERE name = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, "Tom");
ps.executeUpdate();
// 查询操作
sql = "SELECT * FROM user WHERE age > ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, 18);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
// 关闭连接
rs.close();
ps.close();
conn.close();
}
}
```