风的故乡 發表於 2022-9-18 23:00:00

Docker安装MySQL并使用Navicat连接

<h2>MySQL简单介绍:</h2>
<p>  MySQL 是一个开放源码的关系数据库管理系统,开发者为瑞典 MySQL AB 公司。目前 MySQL 被广泛地应用在 Internet 上的大中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。</p>
<h2 id="XQgAH"><span class="ne-text">查看可用的MySQL版本:</span></h2>
<blockquote>
<p id="ue0c55910" class="ne-p"><span class="ne-text">访问DokcerHub中的MySQL镜像库地址:https://hub.docker.com/_/mysql/tags</span></p>
<p id="u4c85144b" class="ne-p"><span class="ne-text">可以通过 Sort by 查看其他版本的MySQL,查看最新版本MySQL镜像(mysql:latest<code class="ne-code"><span class="ne-text">):https://hub.docker.com/_/mysql/tags?page=1&amp;name=latest</span></code><br></span></p>





</blockquote>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220912224155449-346546659.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<blockquote>
<p>此外,我们还可以用<code class="ne-code"><span class="ne-text">docker search mysql</span></code><span class="ne-text">命令来查看可用版本:</span>&nbsp;</p>





</blockquote>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220912224458373-740620849.png" alt="" loading="lazy"></p>
<h2>拉取最新版本的MySQL镜像:</h2>
<div class="cnblogs_code">
<pre>docker pull mysql:latest</pre>
</div>
<blockquote>
<p>注意:tag是可选的,tag表示标签,多为软件的版本,默认是latest版本(最新版)</p>
</blockquote>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220912224805976-1673035520.png" alt="" loading="lazy"></p>
<div class="lake-content">
<h2>验证MySQL镜像是否成功拉取到本地:</h2>
</div>
<div class="lake-content">
<p id="ubb5b6ab1" class="ne-p"><span class="ne-text">使用以下命令来查看mysql镜像是否成功拉取到本地:</span></p>
<div class="cnblogs_code">
<pre>docker images</pre>
</div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220912224917717-101269275.png" alt="" loading="lazy"></p>
<h2><span class="ne-text">创建并运行一个MySQL容器:</span></h2>
<div class="cnblogs_code">
<pre>docker run --name=mysql-test -itd -p <span style="color: rgba(128, 0, 128, 1)">3306</span>:<span style="color: rgba(128, 0, 128, 1)">3306</span> -e MYSQL_ROOT_PASSWORD=root<span style="color: rgba(128, 0, 128, 1)">123456</span> -d mysql</pre>
</div>
<p><strong>参数说明:</strong></p>
<ul>
<li>--name:指定了容器的名称,方便之后进入容器的命令行。</li>
<li>-itd:其中,i是交互式操作,t是一个终端,d指的是在后台运行。</li>
<li>-p:指在本地生成一个随机端口,用来映射mysql的3306端口。</li>
<li>-e:设置环境变量。</li>
<li>MYSQL_ROOT_PASSWORD=root123456:指定了MySQL的root密码</li>
<li>-d mysql:指运行mysql镜像,设置容器在在后台一直运行。</li>
</ul>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220912230427858-971704032.png" alt="" loading="lazy"></p>
<h2>验证MySQL容器是否创建并运行成功:</h2>
<div class="cnblogs_code">
<pre>docker ps</pre>
</div>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220918120452822-1276733082.png" alt="" loading="lazy"></p>
<p><strong>1、进入MySQL容器:</strong></p>
<div class="cnblogs_code">
<pre>docker exec -it mysql-test /bin/bash</pre>
</div>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220918120528311-2002572540.png" alt="" loading="lazy"></p>
<p><strong>2、进入MySQL:</strong></p>
<div class="cnblogs_code">
<pre>mysql -uroot -p<br><br>Enter password:root123456</pre>
</div>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220918120603586-1935355365.png" alt="" loading="lazy"></p>
<h2>MySQL开启远程访问权限:</h2>
<h3>1、切换数据库</h3>
<blockquote>
<p>注意:默认应该就是这个,不切换也行,保险起见还是切换一下</p>
</blockquote>
<div class="cnblogs_code">
<pre>use mysql;</pre>
</div>
<h3>2、给root用户分配远程访问权限</h3>
<div class="cnblogs_code">
<pre>GRANT ALL PRIVILEGES ON <span class="token operator">*<span class="token punctuation">.<span class="token operator">* TO root@<span class="token string">'%' </span></span></span></span><span class="token string"><span class="token string"><span class="token string">WITH GRANT OPTION<span class="token punctuation">;</span></span></span></span></pre>
</div>
<p><strong>参数说明:</strong></p>
<ul>
<li>GRANT:赋权命令</li>
<li>ALL PRIVILEGES:当前用户的所有权限</li>
<li>ON:介词</li>
<li>*.*:当前用户对所有数据库和表的相应操作权限</li>
<li>TO:介词</li>
<li>‘root’@’%’:权限赋给root用户,所有ip都能连接</li>
<li>WITH GRANT OPTION:允许级联赋权</li>
</ul>
<h3>3、强制刷新权限</h3>
<div class="cnblogs_code">
<pre>FLUSH PRIVILEGES;</pre>
</div>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220918173344404-1973222608.png" alt="" loading="lazy"></p>
<h2>服务器配置3306的开放端口:</h2>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220913225458847-942466253.png" alt="" loading="lazy"></p>
<h2>Navicat 连接 MySQL8 报错:2059 - Authentication plugin ‘caching_sha2_password’ cannot be loaded:xxxx;</h2>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220918173645552-937200458.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>错误问题原因:</h3>
<p>  这是因为MySQL8之前密码加密规则为mysql_native_password,而 MySQL8 之后的加密规则为caching_sha2_password,也就是说,如果要用Navicat连接MySQL,其实只需要将密码规则改回 mysql_native_password 即可;</p>
<h3>解决方法:</h3>
<h4>1.进入MySQL数据库</h4>
<div class="cnblogs_code">
<pre>docker exec -it mysql-test /bin/<span style="color: rgba(0, 0, 0, 1)">bash
mysql </span>-uroot -<span style="color: rgba(0, 0, 0, 1)">p
Enter password:root123456</span></pre>
</div>
<h4>2.选择数据库</h4>
<div class="cnblogs_code">
<pre>use mysql;</pre>
</div>
<h4>3.更改密码加密方式</h4>
<blockquote>
<p>IDENTIFIED BY ‘root123456’:连接时输入密码,密码为root123456</p>
</blockquote>
<div class="cnblogs_code">
<pre>ALTER USER <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span>@<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">%</span><span style="color: rgba(128, 0, 0, 1)">'</span> IDENTIFIED BY <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root123456</span><span style="color: rgba(128, 0, 0, 1)">'</span> PASSWORD EXPIRE NEVER; </pre>
</div>
<h4>4.更新用户密码</h4>
<div class="cnblogs_code">
<pre>ALTER USER <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span>@<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">%</span><span style="color: rgba(128, 0, 0, 1)">'</span> IDENTIFIED WITH mysql_native_password BY <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root123456</span><span style="color: rgba(128, 0, 0, 1)">'</span>; </pre>
</div>
<h4>5.刷新权限</h4>
<div class="cnblogs_code">
<pre>FLUSH PRIVILEGES;</pre>
</div>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220918175245746-293950069.png" alt="" loading="lazy"></p>
<h2>Navicat连接MySQL测试:</h2>
<p><img src="https://img2022.cnblogs.com/blog/1336199/202209/1336199-20220918175326223-695278308.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    <blockquote >
<p style='font-family:YouYuan;font-size: 16px;margin: 0 auto 0.01em auto;'><span style='font-size: 17px; '>作者名称:</span>追逐时光者</p>
<p style='font-family:YouYuan;font-size: 16px;margin: 0 auto 0.01em auto;'><span style='font-size: 17px; '>作者简介:</span>一个热爱编程、善于分享、喜欢学习、探索、尝试新事物和新技术的全栈软件工程师。</p>
<p style='font-family:YouYuan;font-size: 16px;margin: 0 auto 0.01em auto;'>
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如果该篇文章对您有帮助的话,可以点一下右下角的【&hearts;推荐&hearts;】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确的地方,欢迎指正或补充,不胜感激。
</p>
</blockquote><br><br>
来源:https://www.cnblogs.com/Can-daydayup/p/16653879.html
頁: [1]
查看完整版本: Docker安装MySQL并使用Navicat连接