文章目录

  • 前言
  • 一、环境
  • 二、部署MySQL
  • 2.1 安装
  • 2.2 配置文件
  • 2.3 登录账户
  • 2.3.1 关闭验证
  • 2.3.2 重置密码
  • 2.3.4 创建数据库
  • 2.3.5 关闭禁止连接
  • 三、遇到的问题
  • 3.1 修改root账户密码
  • 3.2 修改密码后仍然无法登录
  • 3.3 分配权限
  • 四、TODO
  • 存入密码的策略
  • 总结


前言

这两天在新买的电脑上安装MySQL,头一次自主安装MySQL,把过程遇到的问题和解决方法与各位分享


一、环境

系统:macOS Monterey
MySQL版本:8.0.28 官方地址


二、部署MySQL



2.1 安装

这一步还是比较方便,我是从官网下载的dmg安装包,可以在界面上执行简单的操作即可(初始密码可以记录一下,当然如果忘了也不要紧)。
安装完毕后,会在偏好设置中查看到对应的MySQL服务,如下图:

mysql安装时的add mysql安装问题_官网


打开后界面如下图:

mysql安装时的add mysql安装问题_mysql安装时的add_02

2.2 配置文件

默认安装上没有指定配置文件的,可以自行创建一个
我是在/etc/目录下创建的my.cnf
具体配置参数可以参照如下:

[client]
 port = 3306
 socket = /tmp/mysql.sock[mysqld]
 default-storage-engine=INNODB
 character-set-server=utf8
 collation-server=utf8_general_ci
 port = 3306
 socket = /var/lib/mysql/mysql.sock
 key_buffer_size = 16K
 max_allowed_packet = 1M
 table_open_cache = 4
 sort_buffer_size = 64K
 read_buffer_size = 256K
 read_rnd_buffer_size = 256K
 net_buffer_length = 2K
 wait_timeout = 31536000
 interactive_timeout = 31356000
 server-id = 1

以上是比较简易的参数,具体的参数介绍可以查看官网地址:传送门

以上地址中也提到了,如果想在本地看的话,可以到根目录/bin下执行以下脚本查看当前的配置和介绍

./mysqld --verbose --help

2.3 登录账户

第一次登录root账户由于没有权限(我当时也没有记录安装时设置的密码)
那么就需要绕个弯路:关闭验证、重置密码、打开验证

2.3.1 关闭验证

先停止MySQL服务(界面操作Stop即可),如果配置了其他的利用命令停止也可
执行以下操作:

cd /usr/local/my/bin #进入根目录
sudo su #获取管理员权限
./mysqld_safe --skip-grant-tables --skip-networking & #关闭验证并禁止登录

这里–skip-grant-tables --skip-networking的两个参数是关闭验证并关闭远程访问
相当于你的店面打烊并在外卖平台高挂免战牌差不多
具体介绍:官网地址

2.3.2 重置密码

此时打开另一个终端,进入根目录前执行mysql相关操作

cd /usr/local/mysql/bin #进入bin目录
./mysql -u -root -p #登录root账户
use mysql; #指定数据库

更改密码:

alter user 'root'@'localhost' identified 'password'; #针对MySQL8.0, 如果是5.x版本,修改脚本应该是略有不同,感兴趣的朋友可以去官网对比或者搜索一下
create use 'username'@'hostname' identified by 'password'; #新建用户名、Host以及密码
flush privilegs; #刷新配置

可以通过脚本查看当前用户信息:

select user, host, authentication_string from user; #8.0版本; 5.x版本的密码字段应该是password,

然后退出使用新密码登录

2.3.4 创建数据库

重新登录root账户后,可以开始创建数据库、新用户、分配权限

create database xxx; #创建数据库
grant all privileges on xxx.* to 'username'@'hostname' with grant option;

如果需要给用户指定权限,可以将all privileges指定为对应的操作,比如create、drop等,具体信息:官网地址 这里需要强调的是grant命令,是一个多功能的命令,同样可以用来创建用户

2.3.5 关闭禁止连接

设置完成后,如果设置了–skip-networking的话,需要关闭掉,否则你的驱动是无法访问的,具体操作可以查看你指定的配置文件中,会多出这给配置,删除掉重启服务即可。


三、遇到的问题

以上基本是对这两天安装过程的梳理,过程遇到的问题也是比较多的



3.1 修改root账户密码

起初也是翻看了其他朋友的博客,在打开–skip-grant-tables关闭了验证功能后,没有打开另一个shell终端,导致一致无法成功

3.2 修改密码后仍然无法登录

是没有关闭–skip-networking,我最开始是把配置文件中的skip-networking=OFF,这样设置貌似没用,直接删掉就好

3.3 分配权限

新建了账户、关闭了禁止远程连接,带着终于在DataGrid连接成功了的喜悦就去开始执行DDL脚本,建库建表,突然发现没有权限…
所以还是在操作root账户时,最好把建库、分配权限都操作完,避免麻烦


四、TODO



存入密码的策略

由于最开始的脚本都是参照其他朋友的文章,依葫芦花飘的先操作了,后来发现数据库中我设置的密码有的是明文,有的却是非明文的,当时参考的前辈有点多,所以也没有注意是怎么导致的,等发现的时候已经无法溯源了
MySQL密码管理:官网地址 待有空研究明白后,与各位再探讨