Docker环境下mariadb mysql使用配置

测试环境:腾讯云+ubuntu20 

1 拉取镜像

docker pull mariadb

2. 启动mariadb容器
2.1 创建宿主机存放mariadb数据的文件夹并创建容器

[root@localhost docker]# mkdir -p mariadb/data mariadb/logs mariadb/data
[root@localhost docker]# cd mariadb
[root@localhost mariadb]# ls
data  logs data
[root@localhost mariadb]# docker run --name mariadb -d -i -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mariadb
a038a278a3db1c67a41ef54b95fd894e3e5965423961304bf893c45cc0498144
[root@localhost mariadb]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
a038a278a3db        mariadb             "docker-entrypoint.s…"   2 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mariadb

2.2 进入容器

[root@localhost mariadb]# docker exec -it mariadb /bin/bash
root@a038a278a3db:/# 

docker默认安装mysql后端口没有映射到宿主机器,而且用户root只允许localhost本机登录,因此要做相应设置。

(1)查看docker  镜像

ubuntu@VM-16-9-ubuntu:~$ sudo docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS          PORTS                                   NAMES
d28ff9bb1947   seafileltd/seafile-mc:latest   "/sbin/my_init -- /s鈥   54 minutes ago   Up 54 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   seafile
80d998f7cd2a   memcached:1.5.6                "memcached -m 256"       54 minutes ago   Up 54 minutes   11211/tcp                               seafile-memcached
d8f3556cd7e0   mariadb:10.5                   "docker-entrypoint.s鈥   54 minutes ago   Up 54 minutes   3306/tcp                                seafile-mysql

可见mariadb服务端口没有映射到宿主机器,所有我们第一步设置docker镜像的端口映射:

docker run -itd -p 3306:3306 seafile-mysql /bin/bash

这里指定的seafile-mysql是镜像名称,该命令为

HOSTPORT:CONTAINERPORT :未指定ip、指定宿主机port、指定容器port

  • 适用于将容器指定端口指定映射到宿主机的一个端口上(映射所有接口地址)

其他指定端口的方式还有:

①IP:HOSTPORT:CONTAINERPORT:指定ip、指定宿主机port、指定容器port
适用于映射到指定地址的指定端口
eg:将容器的5000端口映射到指定地址127.0.0.1的5000端口上:
docker run -it -d -p 127.0.0.1:5000:5000 docker.io/centos:latest /bin/bash
②IP::CONTAINERPORT:指定ip、未指定宿主机port(随机)、指定容器port
适用于映射到指定地址的任意端口
eg:将容器的4000端口映射到127.0.0.1的任意端口上:
docker run -it -d -p 127.0.0.1::4000 docker.io/centos:latest /bin/bash

查看映射端口配置

命令:

docker port CONTAINER_ID

登录到容器中设置数据库。

(1)登录到容器中

docker exec -it mariadb /bin/bash

(2)登录mysql

use mysql

查看user表的 host,user,passwd字段
MariaDB [mysql]> select host ,user ,password from user;
+-----------+-------------+-------------------------------------------+
| Host      | User        | Password                                  |
+-----------+-------------+-------------------------------------------+
| localhost | mariadb.sys |                                           |
| localhost | root        | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| %         | root        | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-----------+-------------+-------------------------------------------+
3 rows in set (0.001 sec)

(3)修改用户登录设置等

由于10以上版本的mysql.user是视图而不是表,因此不支持传统的修改命令,官方建议通过删除、新建的方式来维护用户。

一、创建一个测试数据库

-- 创建数据库
CREATE DATABASE test;

  
  

二、创建一个本地访问数据库的账户

-- 创建用户
CREATE USER 'username' @ 'localhost' IDENTIFIED BY 'password';

  
  

1. 参数解释:

username:数据库访问的账户;
localhost:数据库的访问方式,外网访问的时候用%替换localhost即可;
password:数据库访问密码,此处输入密码明文;

三、给测试账户分配权限

1. 分配所有权限

-- 给用户分配所有的权限,并且通过localhost访问
GRANT ALL ON test.* to username @ 'localhost' IDENTIFIED BY 'password';
FLUSH privileges;

  
  
-- 给账户分配部分的权限,并且通过外网访问
GRANT insert,delete,select,update ON test.* to username @ '%' IDENTIFIED BY 'password';
FLUSH privileges;

–或则采用下面的代码,除了操作权限授权外,还赋予授权的权限,授权权限未验证过
GRANT ALL ON test.* to username @ ‘%’ IDENTIFIED BY ‘passowrd’ WITH GRANT OPTION;
FLUSH privileges;

如果只是对某一张表进行授权的话,直接把test.* 的 星号替换成表名称即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皖山文武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值