文章目录
- 前言
- 一、环境
- 二、部署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服务,如下图:
打开后界面如下图:
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密码管理:官网地址 待有空研究明白后,与各位再探讨