mac用Homebrew安装MySQL并配置远程登录

server/2024/10/18 0:22:57/

1. 简介

MySQL 是一个开源的关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司开发,后被 Oracle 公司收购。MySQL 使用 SQL(Structured Query Language)作为查询语言,并提供了强大的功能和性能,被广泛应用于各种 Web 应用程序和企业级应用程序中。

以下是 MySQL 的一些主要特点和优势:

  1. **开源和免费:**MySQL 是开源软件,可以免费使用,并且有一个活跃的开源社区支持和维护它。

  2. **跨平台:**MySQL 可以在多种操作系统上运行,包括 Linux、Windows、macOS 等。

  3. **高性能:**MySQL 是一个高性能的数据库系统,能够处理大量的并发连接和请求,并且具有优化查询和存储引擎等功能。

  4. **可靠性和稳定性:**MySQL 是一个稳定可靠的数据库系统,拥有成熟的架构和可靠的数据存储机制,能够保证数据的安全性和完整性。

  5. **可扩展性:**MySQL 支持水平和垂直扩展,可以轻松地扩展以满足不同规模和需求的应用程序。

  6. **丰富的功能:**MySQL 提供了丰富的功能和工具,包括事务处理、存储过程、触发器、索引、备份和恢复等功能,能够满足各种复杂的业务需求。

  7. **广泛的应用:**MySQL 被广泛应用于 Web 开发、企业级应用程序、云计算、大数据等领域,是世界上最流行的数据库管理系统之一。

总的来说,MySQL 是一个强大、稳定、可靠且易于使用的关系型数据库管理系统,适用于各种规模和类型的应用程序开发。

2. 安装

没有安装brew的,可以参考mac安装Homebrew
要通过 Homebrew 安装并启动 MySQL,以及设置远程登录,可以按照以下步骤进行:

  1. **安装 MySQL:**首先,在终端中执行以下命令来安装 MySQL:
brew install mysql
  1. **启动 MySQL 服务:**安装完成后,你可以使用以下命令启动 MySQL 服务:
brew services start mysql
  1. 设置 root 密码:
    运行以下命令启动 MySQL 安全脚本,该脚本将帮助你设置 root 密码和其他安全选项:
mysql_secure_installation
  1. 允许root远程登录:
    首先,使用以下命令以 root 用户身份登录 MySQL:
mysql -u root -p

然后输入你之前设置的 root 密码。
接着,使用以下 SQL 命令允许 root 用户从远程主机登录:


GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

将 ‘your_password’ 替换为你想要设置的密码。

注意:

从 MySQL 8 开始,您不再可以(隐式)使用该GRANT命令创建用户。请改用CREATE USER,后跟GRANT语句:
CREATE USER ‘root’@‘%’ IDENTIFIED BY ‘your_password’;
GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

  1. **设置远程登录:**默认情况下,MySQL 不允许远程登录。要允许远程登录,需要进行以下步骤:
  • **编辑 MySQL 配置文件:**使用文本编辑器打开 MySQL 的配置文件 my.cnf,该文件通常位于 /usr/local/etc/my.cnf/etc/my.cnf。如果不存在,可以根据需要创建该文件。
sudo open -e /usr/local/etc/my.cnf
  • **添加配置:**在文件中添加以下内容,表示允许远程登录:
[mysqld]
bind-address = 0.0.0.0

这会将 MySQL 绑定到所有可用的 IP 地址,允许远程访问。

  • **重启 MySQL 服务:**保存并关闭文件后,重启 MySQL 服务以应用配置更改:
brew services restart mysql
  1. **登录 MySQL 并创建远程用户:**现在,你可以使用 MySQL 客户端登录到 MySQL 服务器,并创建一个允许远程访问的用户。

    • 首先,使用以下命令登录到 MySQL 服务器,你将需要输入你的 MySQL root 用户密码:
    mysql -u root -p
    
    • 登录成功后,可以执行以下 SQL 命令创建一个新的用户,例如 remote_user,并授予该用户远程登录和所有权限:
    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

    'your_password' 替换为你想要设置的密码。

    报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    原因:自定义密码太简单,出现了不符合密码策略的问题
    查看mysql 初始的密码策略

SHOW VARIABLES LIKE 'validate_password%';

在这里插入图片描述

如果遇到

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

修改策略,及密码长度

set global validate_password.policy=0;
set global validate_password.length=1;

validate_password_policy取值

0 or LOW     只验证长度
1 or MEDIUM  验证长度、数字、大小写、特殊字符
2 or STRONG  验证长度、数字、大小写、特殊字符、字典文件

报错:Authentication plugin ‘caching_sha2_password’ cannot be loaded
错误信息:

MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 0x0002): tried: '/usr/local/lib/plugin/caching_sha2_password.so' (no such file), '/usr/local/Cellar/mysql/8.3.0_1/lib/plugin/caching_sha2_password.so' (no such file)

原因:

  • 不是客户端Navicat的原因,是MySQL兼容问题,需要修改数据库的认证方式
  • MySQL8.0版本默认的认证方式是caching_sha2_password
  • MySQL5.7版本则为mysql_native_password。
  1. 解决办法1
    打开系统偏好设置,找到mysql,点击Initialize Database。
    输入你的密码。
    选择‘Use legacy password‘。
    重启mysql服务。
    重新使用Navicat链接数据库
  2. 解决办法2
    用终端连接MySQL,然后执行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
  1. 解决办法3
    修改my.cnf 文件,再重启MySQL:
sudo open -e /usr/local/etc/my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password
  1. **验证远程登录:**现在,你应该能够从远程计算机使用 MySQL 客户端连接到你的 MySQL 服务器。你可以使用以下命令进行测试:
mysql -u remote_user -p -h your_mysql_server_ip

替换 'your_mysql_server_ip' 为你的 MySQL 服务器的 IP 地址。输入远程用户的密码,如果一切设置正确,你应该能够成功登录到 MySQL 服务器。

这样,你就完成了通过 Homebrew 安装并设置远程登录到 MySQL 服务器的过程。

3. 卸载

要通过 Homebrew 卸载 MySQL,你可以执行以下步骤:

  1. **停止 MySQL 服务:**首先,确保停止 MySQL 服务。在终端中执行以下命令:
brew services stop mysql
  1. **卸载 MySQL:**执行以下命令来卸载 MySQL:
brew uninstall mysql
  1. **删除 MySQL 数据文件和配置文件:**MySQL 的数据文件通常存储在 /usr/local/var/mysql/ 目录下。你可以手动删除该目录及其内容,以清除 MySQL 数据文件:
rm -rf /usr/local/var/mysql/
  1. **删除配置文件:**删除 MySQL 的配置文件,以及其他可能残留的文件:
rm -rf /etc/my.cnf
  1. **删除遗留文件:**运行以下命令,删除可能还残留在系统中的 MySQL 相关文件:
rm -rf ~/Library/Caches/Homebrew/mysql*
rm -rf ~/Library/Logs/Homebrew/mysql*
  1. **删除 MySQL 用户和组:**如果你创建了 MySQL 用户和组,你也可以将其删除:
sudo dscl . -delete "/Users/_mysql"
sudo dscl . -delete "/Groups/_mysql"

完成上述步骤后,MySQL 将被完全从你的 macOS 系统中卸载。请确保在删除任何文件之前备份重要数据。


http://www.ppmy.cn/server/28354.html

相关文章

架构设计 | 分布式与集群有什么区别

作为一名从业多年的程序员,对于分布式和集群这两种架构有着深入的了解。简单来说,分布式是将一个任务分拆到多个节点共同完成,而集群则是多个节点执行相同的任务。具体来说,分布式和集群的区别体现在以下几个方面: 一…

【LAMMPS学习】八、基础知识(5.5)极化模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

手拉手springboot整合kafka

前期准备安装kafka 启动Kafka本地环境需Java 8以上 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 Kafka启动方式有Zookeeper和Kraft,两种方式只能选择其中一种启动,不能同时使用。 Kafka下载…

redis中缓存穿透问题

缓存穿透 缓存穿透问题: 一般请求来到后端,都是先从缓存中查找数据,如果缓存中找不到,才会去数据库中查询数据。 而缓存穿透就是基于这一点,不断发送请求查询不存在的数据,从而使数据库压力过大&#xff…

每日一练算法

问题描述 小蓝有一个整数 n。每分钟,小蓝的数都会发生变化,变为上 一分钟的数减去上一分钟的数的各个数位和。 例如,如果小蓝开始时的数为 23,则下一分钟变为 23-(23) 18,再下一分钟变为 18-(18)9,再 下一分…

C语言嵌入Lua解释器的方法

Lua语言是一个轻量的脚本语言,可以用很少的资源运行其解释器 C语言是一个很常用的语言,广泛用于嵌入式等底层场景 这两个语言结合,可以应用于嵌入式等多个场景。比如,一些硬件公司会允许开发者使用Lua语言操作其硬件 Lua的安装…

迁移学习修改最后把一层类别数

参考以下代码 def create_model(aux, num_classes, pretrainTrue):model deeplabv3_resnet50(auxaux, num_classesnum_classes)if pretrain:weights_dict torch.load("./deeplabv3_resnet50_coco.pth", map_locationcpu)if num_classes ! 21:# 官方提供的预训练权…

【c++】反向迭代器的探究实现

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 在list中我们实现了正向的迭代器,学习完优先级队列后,我们也对适配器模式有了一个深刻的理解,这篇文章基于这种模式下,实现各类容器的反向迭…