容器01-使用docker安装运行mysql服务器

安装docker的过程和docker的基本操作, 参见容器00-使用docker安装运行httpd.

安装mysql的docker映像

查找mysql映像

root@iZ6adr2x949lk5Z:/data/mysql# docker search mysql
NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                                                  MySQL is a widely used, open-source relati...   6575      [OK]       
mariadb                                                MariaDB is a community-developed fork of M...   2081      [OK]       
mysql/mysql-server                                     Optimized MySQL Server Docker images. Crea...   483                  [OK]
......还有很多结果显示, 略......

安装mysql映像

最新的版本8.0.X使用老式的客户端登录不上. 这里指定了mysql版本5.7.

root@iZ6adr2x949lk5Z:/data/mysql# docker pull mysql:5.7
5.7: Pulling from library/mysql
be8881be8156: Already exists 
c3995dabd1d7: Already exists 
9931fdda3586: Already exists 
be38c1ab6adb: Already exists 
0e4cc8d0eef6: Already exists 
076630dca16e: Already exists 
c3cdaa36d52c: Already exists 
d91287b16b88: Pull complete 
58ce724b2692: Pull complete 
de12957e6222: Pull complete 
b7aa5badca43: Pull complete 
Digest: sha256:8f96d261d3ae48f2f62ec6510ccd45ae0eae2f2c9192cfcec35f4af5884cdfcf
Status: Downloaded newer image for mysql:5.7

创建mysql使用的目录

root@iZ6adr2x949lk5Z:/data/mysql# ls
conf  data  logs

运行mysql的docker映像成为容器

-p 本机的3306端口映射到docker的3306端口.
–name 指定mysql容器的名称为mysql00.
-v 指定本机路径映射为docker使用的路径.
-e MYSQL_ROOT_PASSWORD=123456 mysql的root用户口令为123456.
-d 指定为后台运行. 脱离当前控制台.
运行后提示创建的容器id为09bc0340a341990f0ed0065bae312a69bd0dc5c31a508a5f2c30dfdac5aefd35

root@iZ6adr2x949lk5Z:/data# docker run -p 3306:3306 --name mysql00 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
92233bcd766b0e4b1a5755db5d434e0fe31640f08d29a75078b29761a049b36b
root@iZ6adr2x949lk5Z:/data# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
92233bcd766b        mysql:5.7           "docker-entrypoint..."   3 seconds ago       Up 3 seconds        0.0.0.0:3306->3306/tcp   mysql01

进入mysql容器

-i 交互
-t 控制台
mysql容器名称为mysql00.
进入交互控制台模式后, 在docker容器中运行mysql客户端.

root@iZ6adr2x949lk5Z:/data# docker exec -it mysql00 /bin/bash
root@92233bcd766b:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

创建数据库和对用户授权

查看mysql.user表的内容.
创建用户java可以在任意主机登录本mysql数据库管理系统.
创建数据库javadb.
允许用户java在任意主机上对javadb进行全部权利的操作.
删除用户root在任意主机登录本mysql数据库管理系统的权利, 只允许在本主机上使用root登录.
刷新权限使权限生效.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host, user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
4 rows in set (0.00 sec)

mysql> create user 'java'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> create database javadb;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on javadb.* to 'java'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> select host, user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | java          |
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
5 rows in set (0.00 sec)

mysql> delete from user where host='%' and user='root';
Query OK, 1 row affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 

附录: mysql数据库创建和增加用户和授权的详细说明

新建用户

登录MYSQL

root@92233bcd766b:/# mysql -uroot -p123456

创建用户, 指定口令. 主机用%表示, 可以用具体的IP地址. 用户名和口令加上单引号以允许空格等特殊字符.

mysql>create user 'java'@'%' identified by '123456';

退出用新用户重新登录

mysql> exit;
root@92233bcd766b:/# mysql -ujava -p123456

创建查看数据库, 表和表结构

mysql> show databases;
mysql> create database 新的数据库名;
mysql> use 数据库名;
mysql> show 表名;
mysql> desc 表名;

为用户授权

登录MYSQL

root@92233bcd766b:/# mysql -uroot -p123456

创建数据库javadb

mysql> create database javadb;
Query OK, 1 row affected (0.11 sec)

授权oop用户拥有javadb数据库的所有权限

mysql> grant all privileges on javadb.* to 'java'@'%';
Query OK, 0 rows affected (0.09 sec)

刷新系统权限表

mysql>flush privileges;
Query OK, 0 rows affected (0.00 sec)

授权oop用户拥有Javadb数据库的选择和更新权限

mysql>grant select, update on javadb.* to 'oop'@'%';

刷新系统权限表, 使权限起效

mysql>flush privileges;

修改指定用户密码

mysql> set password for java@'%' = password('qweasd');
Query OK, 0 rows affected, 1 warning (0.00 sec)

删除用户

mysql> drop user java0@'%';
Query OK, 0 rows affected (0.00 sec)

删除数据库

mysql>drop database 数据库名;

猜你喜欢

转载自blog.csdn.net/dlutcat/article/details/81150048