45 lines
1.4 KiB
Markdown
45 lines
1.4 KiB
Markdown
# 用户权限
|
||
|
||
## Concept Information
|
||
- **Type**: Concept
|
||
- **Status**: Active
|
||
- **Source**: [[mysql-mariadb-数据库详细信息]]
|
||
|
||
## Definition
|
||
MariaDB/MySQL 使用 `username@host` 组合作为权限控制的基本单元,同一个用户名在不同主机来源下可以拥有完全不同的权限级别。
|
||
|
||
## Permission Model
|
||
| Host Pattern | Meaning |
|
||
|--------------|---------|
|
||
| `localhost` | 仅允许本机通过 socket 连接 |
|
||
| `127.0.0.1` | 仅允许本机通过 TCP/IP 连接 |
|
||
| `%` | 允许任意主机连接 |
|
||
| `192.168.1.%` | 允许指定网段连接 |
|
||
| `%.example.com` | 允许指定域名后缀连接 |
|
||
|
||
## Common Example
|
||
```sql
|
||
-- 本地管理员(仅本机 socket)
|
||
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
|
||
|
||
-- 远程访问用户(任意主机)
|
||
CREATE USER 'shenwei'@'%' IDENTIFIED BY '!Abcde12345';
|
||
GRANT ALL PRIVILEGES ON *.* TO 'shenwei'@'%' WITH GRANT OPTION;
|
||
|
||
-- 限制特定网段
|
||
CREATE USER 'app'@'192.168.3.%' IDENTIFIED BY 'password';
|
||
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app'@'192.168.3.%';
|
||
```
|
||
|
||
## Key Principles
|
||
1. **最小权限**:只授予应用程序所需的最小权限
|
||
2. **来源隔离**:生产环境避免使用 `%` 通配符
|
||
3. **权限分离**:不同用途使用不同账户
|
||
|
||
## Related Concepts
|
||
- [[Socket 登录]] — 本地认证方式
|
||
- [[MariaDB]] — 用户权限配置示例
|
||
|
||
## Related Entities
|
||
- [[MariaDB]] — 权限配置实践
|