当前位置: 首页 > 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 加上去。

http://www.lryc.cn/news/571449.html

相关文章:

  • 【入门级-基础知识与编程环境:计算机的历史和常见用途】
  • 【RocketMQ 生产者和消费者】- 消费者重平衡(2)- 分配策略
  • 338比特位技术
  • element ui el-table嵌套el-table,实现checkbox联动效果
  • 轻松搭建Linux开发环境:使用`build-essential`安装GCC编译器**
  • Flask设计网页截屏远程电脑桌面及切换运行程序界面
  • 软件体系结构-论述、设计、问答
  • C++---类和对象(中)
  • BERT介绍
  • 失业学习-前端工程化-webpack基础
  • 智慧城市-城市道路塌方检测数据集VOC+YOLO格式768张1类别
  • 微軟將開始使用 Copilot Vision 監控 Windows 10 和 11 用戶的螢幕
  • 视频点播web端AI智能大纲(自动生成视频内容大纲)的代码与演示
  • 【matlab】图片转视频
  • 【PDF提取表格】批量提取PDF里的内容保存到Excel表格,批量提取PDF文档中的信息到Excel的具体步骤和注意事项
  • FPGA基础 -- Verilog门级建模之奇偶校验电路
  • ollama部署开源大模型
  • VS和VS Code 对比和区别
  • 【图像处理入门】9. 基础项目实战:从去噪到图像加密
  • 计算机视觉课程笔记-机器学习中典型的有监督与无监督学习方法的详细分类、标签空间性质、解释说明,并以表格形式进行总结
  • 论文笔记 <交通灯> IntelliLight:一种用于智能交通灯控制的强化学习方法
  • 2025年- H82-Lc190--322.零钱兑换(动态规划)--Java版
  • 海康威视GigE工业相机的python调用demo
  • 2.8 获取IMU数据与航向锁定
  • Kafka 4.0.0集群部署
  • 二十四、【用户管理与权限 - 篇六】前端动态展现:基于权限的菜单与按钮控制
  • Leetcode-​2537. 统计好子数组的数目​
  • SALMONN-omni论文阅读
  • Datawhale YOLO Master 第1次笔记
  • 利用Enigma Virtual Box将QT生成的软件打包成一个exe可执行文件