安装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 数据库名;