在win中安装mysql

mysql是比较常用的数据库,8.0中的json类型字段更是非常好用,之前用docker做测试数据库,但是电脑重启遇到docker升级,有时候docker就启动错误了,再有win中的wsl非常占用内存,我电脑16g都不够用,无奈之下觉得还是老老实实的安装mysql。下面就介绍下,怎么在win系统中安装mysql数据库

mysql配置参考自官方文档

  • 首先在官网下载压缩包,之后解压缩到你想安装的目录中
  • 在解压缩的路径中新建my.ini配置文件,其中指定了根路径与data的文件夹路径,配置文件如下
[mysqld]
# set basedir to your installation path
basedir=F:/mysql-8.0.26-winx64
# set datadir to the location of your data directory
datadir=F:/mysql-8.0.26-winx64/data

或者也可以在命令行中,指定参数

  • 之后执行命令,初始化数据库并启动mysql,bin\mysqld --defaults-file=my.ini --initialize --console 这里需要注意--defaults-file=my.ini 位置一定要紧跟在mysqld后面,注意位置,否则在初始化的时候会报错,可能是一个bug
  • 或者也可以直接在命令行中指明参数bin\mysqld --initialize --console --basedir=../mysql-8.0.26-winx64 --datadir=../mysql-8.0.26-winx64/data

在命令中添加--console是为了随时看到执行的输出

  • 可以在命令行中,看到系统生成的随机密码,不要关闭这个窗口,让mysql服务保持运行,新打开一个cmd窗口,执行bin\mysql -u root -p 输入密码,系统竟然报密码错误,怎么回事。。。,尝试用 navicat,连接数据库,并输入密码,会提示密码以过期,输入一个新的密码以后,可以登录了。
  • 可是这样一旦关闭cmd窗口,mysql服务就关闭了,而且不能开机启动,太不方便了,安装成mysql服务吧,执行bin\mysqld --install MySQL --defaults-file="my.ini" 就把mysql安装成win服务了,在我的电脑上右键-管理-服务和应用程序,就可以看到添加的名为MySQL 的服务了,在上面右键,改为开机启动。

想要删除服务的话,可以在服务的属性中查看服务名,然后执行sc delete 服务名 即可;也可以使用mysqld -remove移除自己的mysqld服务。


2021/9/18 补充

在后来安装mysql的时候,遇到了无法启动的情况,查询后,按照以下步骤,可以成功启动

  1. 在win中搜索path,打开环境变量,将C:\windows\system32添加进去,这样能保证sc等命令可以运行。执行sc delete 服务名,将之前的服务删除
  2. 将安装路径下的data目录清空,执行bin\mysqld --defaults-file=my.ini --initialize --console 重新初始化数据库
  3. 使用bin\mysqld --console 看是否能启动,如果可以就运行G:/sql/bin/mysqld --install MySQL --defaults-file="G:/sql/my.ini" 虽然不知道什么原因,但是发现这里只有绝对路径,在服务中才能启动
  4. 因为之前添加了环境变量, 所以,通过net start 服务名,就可以成功启动服务了
  5. 启动服务后直接用mysql -u root -p,会登录不成功,但是使用软件登录却可以。在服务器端,不能用navicat软件,因为贵,或者需要破解,公司是不允许的,找到了一款替代的开源数据库管理软件,heidisql
  6. 也可能是因为端口被占用而导致无法启动,执行netstat -ano|findstr 3306,按pid关闭进程即可taskkill /f /pid 4644 或者也可以到任务管理器-详细信息中,找到pid关闭
  7. 配置指定ip可以访问:
    GRANT priv_type ON database.table TO user[IDENTIFIED BY [PASSWORD] ‘password’] [,user [IDENTIFIED BY [PASSWORD] ‘password’]…]
    • priv_type代表允许操作的权限。
    • database.table代表数据库名.表名
      注意*代表所有,如database.代表该数据库的所有表,.*代表所有数据库的所有表
      user由用户名(User)和主机名(Host)构成,中间用@隔开,最好加上单引号,不加也可以执行通过。
    • password代表设置的密码

GRANT ALL PRIVILEGES ON . TO ‘root’@‘192.168.199.99’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
GRANT ALL on . to ‘登陆名’@‘你的ip地址’ identified by ‘你的密码’;
flush privileges;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值