因为有两台电脑,所以准备把ubuntu电脑作成对外服务提供,各种数据库,中间件都使用docker安装管理,然后挂载配置和日志到本地,提供给另一台电脑的对外服务。 看到很多安装都繁琐,我也还是在初步使用,如上安装暂时没有发现有什么问题,出现问题再更改吧。 如下是mysql容器内信息: 本来是找到了conf文件,想直接在容器内部编辑一下的,结果啥习惯用的命令都没有,用yum,apt都试了一下,看来不是redhat和debian包装的豁,然后搜了一下oracle linux的包管理器(因为上面查信息看到的就是这个嘛),发现它们可以用dnf(某博客找到的,又拿来碰了一下),骗鬼的。干脆放弃,反正可以用docker cp,接下来就确定一下mysql的几个重要目录:logs,data和conf目录 好,确定了那几个默认路径没错,这就算是目标所在了,默认信息可以在docker官网上看,然后对照,讲究个因地制宜。 知道不少信息以后就开始配置,一个是挂载mysql的日志,conf和data目录到本地,另一个就是设置mysql远程访问权限。 如上,-d参数设置容器后台运行,链接好默认端口,-v参数链接本地和容器目录,也就是前面找的那几个data,log和conf文件夹了,再来设置容器名,还有几个容器内部的环境参数,具体可参考上面docker官网的信息,这里是指定一个root用户的密码,方便后续设置。 设置远程访问 进入mysql的shell界面以后,进行以下设置: 上面设置要根据不同版本有所变通,然后检验一下远程访问,我用另一台电脑,连上同一个wifi,两台电脑就在同一个局域网了,网络连通性ok,然后使用服务的电脑输入 好,搞定。安装docker
sudo apt search docker
sudo apt install docker.io
# 简单的docker命令
sudo docker ps -a # 查看容器状态,在这可以看到容器的名字,id,创建时间和端口信息
sudo docker images # 查看镜像
sudo docker pull something # 拉取something镜像
sudo docker run -d --name abaaba -p src_port:container_port something #后台运行something,链接本地src_port端口到container_port容器端口
sudo docker exec -it container_id /bin/bash # 进入指定id的容器
sudo docker rm -f container_id # 删除指定id的容器
sudo docker cp src_file abaaba:/d/a # 复制主机src_file文件到abaaba容器根目录下d文件夹内的a文件中;也可以反过来用,把容器内文件复制到本地
docker安装mysql
sudo docker pull mysql
# 如上把刚拉取的mysql跑起来看看具体信息
sduo docker run -d -p 3306:3306 --name mysql_service -e MYSQL_ROOT_PASSWORD=root mysql
sudo docker exec -it mysql_service /bin/bash
# 可以看到容器主体信息就这样,是一个oracle打造的linux server,专门供给oracle类的服务,比如mysql
bash-4.4# cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="8.7"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.7"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.7"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:7:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"
ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.7
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.7
bash-4.4# mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
bash-4.4# vim /etc/mysql/my.cnf
bash: vim: command not found
# 各种command not found
bash-4.4# apt install aaa
bash: apt: command not found
bash-4.4# dnf install vim
bash: dnf: command not found
bash-4.4# yum install aaa
bash: yum: command not found
bash-4.4#
bash-4.4# ls /var/lib | grep mysql
mysql
mysql-files
mysql-keyring
bash-4.4# ls /etc/mysql/
conf.d
bash-4.4# ls /var/log
mysqld.log
bash-4.4#
挂载mysql重要文件到本地
sudo docker run -d --restart=always -p 3306:3306 \
-v /opt/services/mysql/conf:/etc/mysql/conf.d \
-v /opt/services/mysql/logs:/var/log \
-v /opt/services/mysql/data:/var/lib \
--name mysql_service \
-e MYSQL_ROOT_PASSWORD=123456
# 看看跑起来了没
sudo docker ps -a
# 进入容器进行远程访问设置
sudo docker exec -it mysql_service /bin/bash
bash-4.4# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.33 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
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 database
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
# 查看用户信息,主要确定是否有两个root用户
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
5 rows in set (0.00 sec)
# 删掉主机不限定的root用户,方便后面修改权限
mysql> delete from user where host='%' and user='root';
Query OK, 1 row affected (0.01 sec)
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
# 把删掉的用户添加回来
mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 刷权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
# 设置远程访问
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
mysql -h 192.168.0.100 -uroot -p
命令,要记得在使用服务的电脑也装上mysql客户端并确保命令可用,当然也可以用其他工具测试,比如navicat,可惜付费,另外就是注意ip问题了。