当前位置: 首页 > news >正文

MacOS15.5 MySQL8 开启 mysql_native_password

MySQL 8 默认关闭了 mysql_native_password, 需要手动开启。但是MacOS各种坑,气死个人。

mysql8 内置了 mysql_native_password ,只是没有开启。 验证方式是执行 show plugins; ,返回的结果中应该有 mysql_native_password ,并且是 disabled 状态。

系统设置,往下拉,找到Mysql,正常情况下你应该是小绿点,active状态。

进入“Configuration”标签页,默认 Configuration file 是没有勾选的,是空的。请勾选,并配置为 /etc/my.cnf。 并点击“Apply”,并确定

当然,你可能听说 Mysql 有很多配置文件, 也可以配置到~/.my.cnf。但这是错误的。理论上可以,但实际上不行,为啥我也不知道,我估计又是MacOS的诡异权限问题。

编辑 /etc/my.cnf 文件是需要root的,切换到root用户的方式,是执行命令 “sudo su - root”.

网上一堆人说,要找 my-default.cnf 文件,它是默认模板文件,复制一下,改一下就行了。扯淡的是,MacOS下根本没这个文件。这里我直接给出文件内容,你直接复制粘贴到 /etc/my.cnf 即可。

# Example MySQL config file for medium systems.  
#  
# This is for a system with little memory (32M - 64M) where MySQL plays  
# an important part, or systems up to 128M where MySQL is used together with  
# other programs (such as a web server)  
#  
# MySQL programs look for option files in a set of  
# locations which depend on the deployment platform.  
# You can copy this option file to one of those  
# locations. For information about these locations, see:  
# http://dev.mysql.com/doc/mysql/en/option-files.html  
#  
# In this file, you can use all long options that a program supports.  
# If you want to know which options a program supports, run the program  
# with the "--help" option.  
# The following options will be passed to all MySQL clients  
[client]
default-character-set=utf8
#password   = your_password  
port        = 3306  
socket      = /tmp/mysql.sock   
# Here follows entries for some specific programs  
# The MySQL server  
[mysqld]
# default_authentication_plugin=mysql_native_password
mysql_native_password=ON
character-set-server=utf8  
init_connect='SET NAMES utf8' 
port        = 3306  
socket      = /tmp/mysql.sock  
skip-external-locking  
key_buffer_size = 16M  
max_allowed_packet = 1M  
table_open_cache = 64  
sort_buffer_size = 512K  
net_buffer_length = 8K  
read_buffer_size = 256K  
read_rnd_buffer_size = 512K  
myisam_sort_buffer_size = 8M  
# Don't listen on a TCP/IP port at all. This can be a security enhancement,  
# if all processes that need to connect to mysqld run on the same host.  
# All interaction with mysqld must be made via Unix sockets or named pipes.  
# Note that using this option without enabling named pipes on Windows  
# (via the "enable-named-pipe" option) will render mysqld useless!  
#   
#skip-networking  # Replication Master Server (default)  
# binary logging is required for replication  
log-bin=mysql-bin  # binary logging format - mixed recommended  
binlog_format=mixed  # required unique id between 1 and 2^32 - 1  
# defaults to 1 if master-host is not set  
# but will not function as a master if omitted  
server-id   = 1  # Replication Slave (comment out master section to use this)  
#  
# To configure this host as a replication slave, you can choose between  
# two methods :  
#  
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -  
#    the syntax is:  
#  
#    CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,  
#    MASTER_USER=<user>, MASTER_PASSWORD=<password> ;  
#  
#    where you replace <host>, <user>, <password> by quoted strings and  
#    <port> by the master's port number (3306 by default).  
#  
#    Example:  
#  
#    CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,  
#    MASTER_USER='joe', MASTER_PASSWORD='secret';  
#  
# OR  
#  
# 2) Set the variables below. However, in case you choose this method, then  
#    start replication for the first time (even unsuccessfully, for example  
#    if you mistyped the password in master-password and the slave fails to  
#    connect), the slave will create a master.info file, and any later  
#    change in this file to the variables' values below will be ignored and  
#    overridden by the content of the master.info file, unless you shutdown  
#    the slave server, delete master.info and restart the slaver server.  
#    For that reason, you may want to leave the lines below untouched  
#    (commented) and instead use CHANGE MASTER TO (see above)  
#  
# required unique id between 2 and 2^32 - 1  
# (and different from the master)  
# defaults to 2 if master-host is set  
# but will not function as a slave if omitted  
#server-id       = 2  
#  
# The replication master for this slave - required  
#master-host     =   <hostname>  
#  
# The username the slave will use for authentication when connecting  
# to the master - required  
#master-user     =   <username>  
#  
# The password the slave will authenticate with when connecting to  
# the master - required  
#master-password =   <password>  
#  
# The port the master is listening on.  
# optional - defaults to 3306  
#master-port     =  <port>  
#  
# binary logging - not required for slaves, but recommended  
#log-bin=mysql-bin  # Uncomment the following if you are using InnoDB tables  
#innodb_data_home_dir = /usr/local/mysql/data  
#innodb_data_file_path = ibdata1:10M:autoextend  
#innodb_log_group_home_dir = /usr/local/mysql/data  
# You can set .._buffer_pool_size up to 50 - 80 %  
# of RAM but beware of setting memory usage too high  
#innodb_buffer_pool_size = 16M  
#innodb_additional_mem_pool_size = 2M  
# Set .._log_file_size to 25 % of buffer pool size  
#innodb_log_file_size = 5M  
#innodb_log_buffer_size = 8M  
#innodb_flush_log_at_trx_commit = 1  
#innodb_lock_wait_timeout = 50  [mysqldump]  
quick  
max_allowed_packet = 16M  [mysql]  
no-auto-rehash  
# Remove the next comment character if you are not familiar with SQL  
#safe-updates  
default-character-set=utf8   [myisamchk]  
key_buffer_size = 20M  
sort_buffer_size = 20M  
read_buffer = 2M  
write_buffer = 2M  [mysqlhotcopy]  
interactive-timeout

然后root用户下,执行 chmod 777 /etc/my.cnf

接下来有一些高端操作,不解释,跟着做就好。

先找到mysql根目录,你可以通过 执行 which mysql 命令获取,也可以看这里 Error Log的目录,例如对于 /usr/local/mysql/data/mysqld.local.err ,它的实际mysql根目录是 /usr/local/mysql/bin。

在mysql根目录下,执行:

# 均在 root 用户下执行mv /usr/local/mysql/bin/mysqld /usr/local/mysql/bin/mysqld.bak# 这个文件空的就可以,vim 之后直接 :wq
vim /usr/local/mysql/bin/mylog.tmp.txtchmod 777 /usr/local/mysql/bin/mylog.tmp.txtvim /usr/local/mysql/bin/mysqld

/usr/local/mysql/bin/mysqld 内容:

#!/bin/bashecho "Input arguments: $@"echo "Input arguments: $@" >> /usr/local/mysql/bin/mylog.tmp.txt/usr/local/mysql/bin/mysqld.bak "$@" --mysql-native-password=ON

这样就配置完了,需要重启mysql服务(每次启动都要输管理员密码,确实很麻烦)。经过上述的修改,启动状态就无法在这里看到了,会永远都是红点。那如何验证是否启动成功呢?可以执行:

ps -ef | grep mysql   看有没有 mysqld.bak + 一大串参数 的进程,如果有就是成功了。没有就是失败了。

失败日志可以执行  tail -f /usr/local/mysql/data/mysqld.local.err  来查看

命令执行情况可以执行 tail mylog.tmp.txt  查看,每次执行命令都会记录下来。如果过几秒就多一条命令,说明服务在不断重启。

正常情况下,应该不会报错。你通过 ps -ef | grep mysql  看到相关进程,就可以尝试连接一下数据库测试了,执行 show plugins; 应该能看到 mysql_native_password 是 active 状态

那么如何重启mysql服务呢?因为系统设置里一直都是红点,根本没有stop按钮,所以你要通过 ps -ef | grep mysql  查看进程号,直接kill掉。   然后再从系统设置里再启动一次,完成重启。

 

上面整个操作的原理,就是替换原本的 mysqld 文件,改成我们自己的shell文件,我们的shell文件再调用原本的mysqld文件,这样我们就能在中间加参数,把 --mysql-native-password=ON 加上去。

相关文章:

  • python在word创建w:t元素
  • 城市生命线安全运行“一网统管”体系建设思路
  • Excel将表格文件由宽数据转为长数据的方法
  • llama_index chromadb实现RAG的简单应用
  • Spring Cloud LoadBalancer深度解析:官方负载均衡方案迁移指南与避坑实践
  • 第七节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 用户管理(上)
  • 基于CNN的FashionMNIST数据集识别6——DenseNet模型
  • Tomcat 核心配置解析:4 大文件、乱码处理、端口与 Manager 配置
  • 技术分享:UMI机器人操作通用框架在Franka机器人上的配置方法
  • UE5 游戏模板 —— Puzzle 拼图游戏
  • BERT介绍
  • leetcode:263. 丑数(python3解法,数学相关算法题)
  • 浅谈 Unity XR:从混战到统一,OpenXR 的演进与现实困境
  • ContextData() 在 pysnmp 中的作用详解
  • 榕壹云家政系统:基于Spring Boot与UniApp的智能家政服务解决方案
  • Go 语言的基础数据类型
  • 论文笔记:GTG: Generalizable Trajectory Generation Model for Urban Mobility.
  • 从UI前端到数字孪生:构建数据驱动的智能生态系统
  • 路由器压测实战:从负载均衡到DDoS防御,5步定位性能瓶颈(附脚本工具包)
  • vue 工具函数 useInfiniteScroll实现数据懒加载
  • 音乐网站开发背景及意义/贵阳百度快照优化排名
  • wordpress发送到朋友圈美图/seo综合优化公司
  • 江西软件职业技术大学/百度关键词优化送网站
  • 苏州网络推广网站建设/百度付费问答平台
  • 嘉兴模板建站代理/怎么网站推广
  • 网站开发需要什么证书/seo网站推广培训