北京网站设计公司有哪些,工作作风存在问题及整改措施,网站模板安装出现预先建设数据库,专业做电脑系统下载网站如果你通过 sudo port install 命令正常安装了 MySQL#xff0c;再通过 sudo port load 命令启动了 MySQL Server#xff0c;此刻却发现使用 Navicat 之类的 GUI 软件无法连接#xff0c;始终返回无法连接到 127.0.0.1 服务器。这是一个小坑#xff0c;因为他默认使用了 So… 如果你通过 sudo port install 命令正常安装了 MySQL再通过 sudo port load 命令启动了 MySQL Server此刻却发现使用 Navicat 之类的 GUI 软件无法连接始终返回无法连接到 127.0.0.1 服务器。这是一个小坑因为他默认使用了 Sock 套接字连接方式。 1. 直接使用套接字
如果你并不在意客户端如何连接 MySQL你可以直接使用套接字的方式。这里以 Navicat 为例 很简单在 Navicat 的高级选项中勾选 使用套接字文件填写/opt/local/var/run/mysql57/mysqld.sock 路径即可版本不同请将中间的 57 修改为你所安装的版本
当然你 仍然 需要回到顶部的常规页中 输入密码
为什么是这个路径
首先我们来看看安装成功后的提示 On activation if no /opt/local/etc/mysql57/my.cnf file exists one will be created which loads /opt/local/etc/mysql57/macports-default.cnf. If a /opt/local/etc/mysql57/my.cnf file exists MacPorts does not touch it and any changes you make to /opt/local/etc/mysql57/my.cnf will be preserved (e.g., during port upgrades, deactivations or activations). /opt/local/etc/mysql57/my.cnf is a good place to customize your mysql57 installation. 翻译 在激活时如果不存在 /opt/local/etc/mysql57/my.cnf 文件将创建一个加载 /opt/local/etc/mysql57/macports-default.cnf 文件的默认文件也就是默认的 my.cnf。 MacPorts 不会修改已存在的 /opt/local/etc/mysql57/my.cnf 文件。你对 /opt/local/etc/mysql57/my.cnf 修改的任何配置都会被保留即便是使用 port 命令更新 MySQL、停用或激活。 总的来说通过 /opt/local/etc/mysql57/my.cnf 进行配置就行啦。 在安装后未做任何配置的情况下my.cnf 文件里仅有一句 包含加载 macports-default.cnf 的语句
# 注意此处的 !include 并非是不包含不加载的意思
!include /opt/local/etc/mysql57/macports-default.cnf我们再看看 macports-default.cnf 文件
[mysqld]
# skip-networking so multiple mysql server ports can be loaded without each competing for port 3306.
# skip-networking 用于加载多个 mysql 服务器端口防止每个服务器都去使用 3306这里指避免端口冲突
skip-networking回到路径问题在没有做其它配置的情况下因为 macports-default.cnf 中默认使用了套接字即 skip-networking然后在安装阶段会根据版本创建一个 mysql[Version] 的文件夹在 /opt/local/var/run 下例如 /opt/local/var/run/mysql57
而 mysqld 进程即 MySQL Server 启动后会在该目录下写入一个 mysqld.sock.lock 文件 当然还有 mysqld.sock不过通过 Finder 是看不到的。所以这里连接这个 mysqld.sock 文件就行了。
因为套接字适用于本机连接如果数据库不需要局域网或外网访问直接使用套接字也是一个不错的方式。2. 使用传统 TCP/IP 连接
传统 TCP/IP 也就是 IP:Port 的方式了即默认的 127.0.0.1:3306
通过上方使用套接字连接我们了解到其实 my.cnf 文件是对 macports-default.cnf 文件的覆写因为 !include 写在最顶部
所以解决方法非常简单只需要在 my.cnf 中加入下方配置即可
# Use default MacPorts settings
!include /opt/local/etc/mysql57/macports-default.cnf[mysqld]
# 覆盖原有配置
skip-networking OFF
# 自定义端口如不配置将使用默认 3306
port 3306保存后 unload 再 load MySQL 服务即可
3. 初始化数据库以及启动异常处理
如果你通过 port 重新安装过 MySQL且手动删除过下方这三个目录里的 mysql[Version] 相关文件夹你可能会遇到一些问题而需要重新初始化数据库
/opt/local/var/db/opt/local/var/log/opt/local/var/run
老生常谈的问题数据无价注意备份备份备份
此处仍然以 MySQL 5.7 版本举例在确保备份以及可以重新初始化 的情况下首先停止 MySQL 服务
sudo port unload mysql57-server然后删除这些目录
/opt/local/var/db/mysql57/opt/local/var/db/mysql57-files/opt/local/var/db/mysql57-keyring/opt/local/var/log/mysql57/opt/local/var/run/mysql57
开始初始化工作其中部分目录需要手动创建这些目录如果不存在会导致启动失败当然还需要将所有者赋予 _mysql
sudo mkdir /opt/local/var/db/mysql57-files
sudo chown _mysql:_mysql /opt/local/var/db/mysql57-files
sudo mkdir /opt/local/var/db/mysql57-keyring
sudo chown _mysql:_mysql /opt/local/var/db/mysql57-keyring
sudo mkdir /opt/local/var/run/mysql57
sudo chown _mysql:_mysql /opt/local/var/run/mysql57这里建议 my.cnf 参考如下配置其功能是打开慢查询日志写入功能以及错误日志的路径指定
# Use default MacPorts settings
!include /opt/local/etc/mysql57/macports-default.cnf[mysqld]
skip-networking OFF
port 3306# Slow query config
slow_query_log ON
slow_query_log_file /opt/local/var/log/mysql57/slow.log
long_query_time 1
log_error_verbosity 2# Error log
log_error /opt/local/var/log/mysql57/mysqld.log如果不配置日志相关路径则错误日志等文件将会写入到同数据 /opt/local/var/db/mysql57 目录下
所以这里我们还需要手动创建一下日志目录
sudo mkdir /opt/local/var/log/mysql57
sudo chown _mysql:_mysql /opt/local/var/log/mysql57目录准备完成后就可以初始化数据库了
sudo /opt/local/lib/mysql57/bin/mysqld --initialize --user_mysql
sudo port load mysql57-server如果版本一致应该只有这么一句提示
--- Loading startupitem mysql57-server for mysql57-server如果你参考了我上方的 my.cnf 配置那么 获取初始化密码 的命令也是一样的
sudo cat /opt/local/var/log/mysql57/mysqld.log最后使用 mysql 命令连接数据库后修改密码即可
mysql -uroot -p
# 回车后粘贴上方获取的密码连接到数据库在 MySQL 命令行中执行
# 将 123456 修改为你需要设置的密码
set password password(123456);# 如需开放来源连接请执行下方两句否则无需执行
use mysql;
update user set host% where userroot;好了“导航猫”也能跟以前一样连接了