MySQL安装,root用户远程配置,docker安装MySQL
第一、客户端
- 安装Wampserver64 一步到位(开发、连接远程都可以)。
- 安装MySQL Workbench 8.0 CE(连接数据库工具)
- Navicat Premium 16
第二、Ubuntu服务端
以下是在Ubuntu上安装MySQL的详细步骤:
- 打开终端并更新软件包列表
sudo apt-get update
- 安装MySQL服务器和客户端
sudo apt-get install mysql-server mysql-client
- 在安装过程中,您将被要求创建MySQL root用户的密码。输入并记住此密码。
- 随后,MySQL服务器将自动启动,并且将在系统启动时启动。
- 检查MySQL是否正在运行
sudo systemctl status mysql
- (可选)为MySQL设置更高的安全性 MySQL附带了一个称为
mysql_secure_installation
的脚本,该脚本可以帮助您进行一些初始设置以提高安全性。您可以通过以下命令启动该脚本:
sudo mysql_secure_installation
- 连接到MySQL服务器
sudo mysql -u root -p
在提示符下输入之前创建的MySQL root密码,然后按Enter键即可连接到MySQL服务器。
现在,您已经成功地在Ubuntu上安装了MySQL。
第三、远程连接MySQL
如果您在Ubuntu上安装了MySQL,并尝试使用MySQL Workbench 8.0 CE连接到MySQL服务器时,出现拒绝访问的错误,请按照以下步骤解决问题:
- 确保MySQL服务器正在运行。您可以使用以下命令检查MySQL服务器状态:
sudo systemctl status mysql
- 检查MySQL服务器端口是否正确配置。默认情况下,MySQL服务器使用3306端口。您可以使用以下命令检查MySQL服务器端口配置:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在文件中,找到bind-address
和port
选项。确保bind-address
设置为127.0.0.1
,port
设置为3306
。
- 检查MySQL用户和密码是否正确。请确保使用正确的用户名和密码连接到MySQL服务器。
- 检查防火墙设置。如果您的Ubuntu系统启用了防火墙,则需要允许MySQL服务器通过防火墙。您可以使用以下命令打开MySQL服务器所需的端口:
sudo ufw allow 3306/tcp
- 如果您仍然无法连接到MySQL服务器,请尝试使用telnet命令测试连接。您可以使用以下命令测试MySQL服务器的连接:
telnet localhost 3306
如果成功连接,您应该看到一些字符输出。如果连接失败,则表示MySQL服务器可能未正确配置或未启动。
希望这些步骤能够帮助您解决连接MySQL服务器的问题。
第四、ubuntu mysql如何为用户赋予远程登录的权限
如果您在Ubuntu上安装了MySQL,并且想要为用户赋予远程登录权限,可以按照以下步骤操作:
- 使用root用户或具有管理员权限的用户登录到MySQL服务器。
- 创建一个新用户,并为该用户分配密码。在这个例子中,我们将创建一个名为
qianniu
的用户:
CREATE USER 'qianniu'@'%' IDENTIFIED BY 'pwd123456*';
- 授予新用户访问权限。请注意,在这个例子中,我们将允许
qianniu
从任何IP地址连接到MySQL服务器。如果您只希望允许特定IP地址连接,请将%
替换为相应的IP地址。
GRANT ALL PRIVILEGES ON *.* TO 'qianniu'@'%';
- 刷新MySQL权限表以使更改生效
FLUSH PRIVILEGES;
现在,用户qianniu
已被授予从任何地方远程登录MySQL服务器的权限。请注意,这可能会降低系统的安全性,因此建议仅为必要的用户授予远程登录权限,并使用安全的密码策略来保护账户安全。
第五、修改root密码
如果您在Ubuntu上安装了MySQL,并且想要更改root用户的密码,可以按照以下步骤操作:
- 使用root用户或具有管理员权限的用户登录到MySQL服务器。
- 打开MySQL shell并连接到MySQL服务器:
mysql -u root -p
- 输入当前的root用户密码以登录到MySQL shell。
- 更改root用户密码。在此示例中,我们将更改root用户的密码为“pwd123456”:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pwd123456*';
- 刷新MySQL权限表以使更改生效:
FLUSH PRIVILEGES;
现在,root用户的密码已被更改为“pwd123456”。请注意,在生产环境中,请使用强密码来保护服务器的安全性。
第六、Docker安装MySQL
1先停止宿主机上的MySQL服务
如果不停止的话,会导致端口冲突,也可以直接卸载
- 停止 MySQL 服务:
sudo systemctl stop mysql
- 卸载 MySQL:
sudo apt-get remove --purge mysql-server mysql-client mysql-common
- 删除 MySQL 的配置和数据文件夹:
sudo rm -rf /etc/mysql/ /var/lib/mysql/
- 清理未使用的依赖项:
sudo apt-get autoremove
以上步骤将卸载 MySQL 并完全删除其相关文件和目录。
2安装准备
# 列出mysql进程
ps -ef | grep mysql
# 列出mysql网络
netstat -anp | grep mysql
# 查找3306端口是否被占用
sudo lsof -i:3306
3安装
- 获取镜像
# 拉取镜像
sudo docker pull mysql:5.7
- 启动mysql
sudo docker run --name mysql -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_ROOT_HOST='%' --restart=always -d mysql:5.7
- 指定容器名:
–name mysql- 映射端口:
-p 宿主机端口:容器端口- 挂载配置文件数据卷:(宿主机目录:容器目录)
-v /usr/local/mysql/conf:/etc/mysql/conf.d- 挂载数据库数据卷:(宿主机目录:容器目录)
-v /usr/local/mysql/data:/var/lib/mysql- 指定root密码:
MYSQL_ROOT_PASSWORD=123456- 指定任意主机登录,相当于bind address:
MYSQL_ROOT_HOST=‘%’:- 跟随docker自启动:
–restart=always- 后台运行:
-d
4验证安装是否成功?
a指令验证
# 进入容器
docker exec -it [容器id] bash
# 在容器内登录mysql
mysql -u root -p
输入密码:123456
# 查看数据
show databases;
b远程登录
5访问失败的情况
查看防火墙是否允许通过 3306 端口进行流量传输,请按照以下步骤操作:
- 检查系统中是否安装了防火墙。Ubuntu 系统默认使用
ufw
防火墙,您可以使用以下命令检查其状态:
sudo ufw status
- 如果防火墙处于活动状态,则需要添加 3306 端口的入站规则以允许外部客户端访问 MySQL。假设您希望允许来自所有 IP 地址的客户端通过 3306 端口访问 MySQL,可以使用以下命令添加入站规则:
sudo ufw allow 3306/tcp
- 确认入站规则已生效。您可以使用以下命令检查规则是否已添加并正确配置:
sudo ufw status numbered
此命令会列出防火墙规则及其编号。请确保已添加的规则具有正确的端口号和协议(例如,TCP 或 UDP)。
查看 Docker 容器是否在运行并使用 3306 端口,请按照以下步骤操作
- 使用以下命令列出当前正在运行的所有 Docker 容器:
docker ps
- 找到运行您的 MySQL 容器的行,并检查端口映射设置。在您的命令中,将主机的 3306 端口映射到 Docker 容器的 3306 端口:
-p 3306:3306
如果您在启动容器时使用了其他端口映射设置,则需要相应地更改以下步骤中的端口号。
- 获取 MySQL 容器的 IP 地址。您可以使用以下命令来获取该信息:
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql
- 运行以下命令以检查指定的 IP 地址和端口是否正在接受传入连接请求:
nc -vz <container_ip_address> 3306
请将 <container_ip_address>
替换为上一步骤中获取的 MySQL 容器 IP 地址。
如果输出类似于下面的内容,则表示端口已经打开且可以被访问:
Connection to <container_ip_address> 3306 port [tcp/mysql] succeeded!
如果输出类似于下面的内容,则表示端口无法访问:
nc: connect to <container_ip_address> port 3306 (tcp) failed: Connection refused
以上步骤将帮助您确定 Docker 容器是否正在使用 3306 端口,并检查该端口是否能够被外部客户端连接。