docker 怎么给mysql用户赋予权限
时间: 2023-08-17 07:09:13 浏览: 260
要给 MySQL 用户赋予权限,可以使用以下步骤:
1. 首先,进入 MySQL 容器。你可以使用以下命令:
```
docker exec -it <容器名称或ID> mysql -u root -p
```
这将进入 MySQL 容器并使用 root 用户登录。
2. 输入密码以登录到 MySQL。
3. 接下来,使用以下命令创建一个新用户(假设新用户为 "new_user"):
```
CREATE USER 'new_user'@'%' IDENTIFIED BY 'password';
```
这会创建一个新的用户,并设置密码为 "password"。其中,'%' 表示该用户可以从任何主机连接到 MySQL。
4. 接着,为该用户授予权限。例如,如果你想授予该用户对所有数据库的读写权限,可以执行以下命令:
```
GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'%';
```
这会授予该用户对所有数据库的所有权限。
5. 最后,刷新权限以使更改生效:
```
FLUSH PRIVILEGES;
```
现在,你已经成功为 MySQL 用户指定了权限。请注意,这些命令是在 MySQL 容器中执行的。如果你使用的是 Docker Compose,可以将这些命令添加到 `docker-compose.yml` 文件的 `command` 部分,以便在启动容器时自动执行。
相关问题
docker 配置mysql定时备份
在Docker环境下配置MySQL定时备份,可以使用以下步骤:
1. 创建一个用于存储备份文件的目录,例如`/backup`。
2. 创建一个Shell脚本文件,用于执行备份操作。可以使用`mysqldump`命令来备份MySQL数据库。以下是一个示例脚本:
```shell
#!/bin/bash
# 备份文件的保存路径
BACKUP_DIR="/backup"
# MySQL连接信息
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
MYSQL_USER="root"
MYSQL_PASSWORD="password"
# 备份文件名
BACKUP_FILE="${BACKUP_DIR}/$(date +%Y-%m-%d_%H%M%S).sql"
# 执行备份
mysqldump -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} --all-databases > ${BACKUP_FILE}
# 删除七天前的旧备份
find ${BACKUP_DIR} -type f -name "*.sql" -mtime +7 -exec rm {} \;
```
3. 将脚本保存为`backup.sh`文件,并赋予执行权限:`chmod +x backup.sh`。
4. 在Docker中创建一个定时任务,定期执行备份脚本。可以使用`crontab`命令来设置定时任务。以下是一个示例:
```shell
# 编辑定时任务
crontab -e
```
在打开的编辑器中,添加以下内容:
```
# 每天凌晨3点执行备份脚本
0 3 * * * /path/to/backup.sh
```
保存并退出编辑器。
现在,MySQL定时备份已经配置完成。每天凌晨3点,脚本将自动执行备份操作,并删除七天前的旧备份文件。
2个部署在 docker的MySQL服务器,实现主主备份
要实现主主备份,需要在两个部署在docker的MySQL服务器之间建立一个双向同步的复制关系。以下是实现步骤:
1. 创建两个MySQL容器,分别为server1和server2。
2. 在server1和server2中分别创建一个用于复制的用户,例如repl_user,赋予复制权限。
3. 在server1中执行以下命令,设置server1为主服务器,server2为从服务器:
```
CHANGE MASTER TO
MASTER_HOST='server2',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
```
其中,MASTER_LOG_FILE和MASTER_LOG_POS的值需要根据server2的binlog信息进行设置。
4. 在server2中执行以下命令,设置server2为主服务器,server1为从服务器:
```
CHANGE MASTER TO
MASTER_HOST='server1',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
```
同样,MASTER_LOG_FILE和MASTER_LOG_POS的值需要根据server1的binlog信息进行设置。
5. 启动复制过程,在server1和server2中分别执行以下命令:
```
START SLAVE;
```
6. 确认复制已经启动,在server1和server2中分别执行以下命令:
```
SHOW SLAVE STATUS\G
```
如果复制正常工作,应该能看到类似以下输出:
```
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: server2
Master_User: repl_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 107
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
```
7. 现在,server1和server2之间已经建立了一个双向同步的复制关系。任何一个服务器上的数据更改都会被同步到另一个服务器上,从而实现主主备份。
阅读全文