- 官网下载zip安装包:MySQL官网
- 解压在某个目录,我放在了D:\software,修改解压文件mysql-8.0.11-winx64下的my.ini文件,设置
basedir = D:/software/mysql-8.0.11-winx64/
datadir = D:/software/mysql-8.0.11-winx64/data/ - 对于mysql5.7之后的版本,需要在命令行先运行以下命令,安装服务,会产生临时密码:
mysqld --initialize --console
如果提示下面这个Cant create directory …失败,第2步basedir和datadir文件目录是反斜杠/,并需要自己在mysql-8.0.11-winx64目录下创建一个data文件夹。
下面的提示,代表初始化成功,临时密码为gvTuqg-PV4ek:
-
安装服务,mysqld -install 服务名
例如: mysqld -install MySQL8 -
执行net start MySQL8启动mysql,MySQL8是自己命名的服务名称,如果不写默认是mysql。
注意如果机器上安装了多个mysql,因为配置文件中有一行enable-named-pipe,启用了命名管道,而且默认的服务名都是MySQL,所以,当你初始化完第二个mysql,启动时,出错,可以看到err.log中有提示Can’t start server : Named Pipe “MySQL” already in use。修改配置文件,增加一个设置,将socket属性设置为你的服务名(因为你的第二个mysql的服务名肯定是修改过的,不会与第一个服务名重复),所以,这里一定要用你的第二个mysql的服务名。
socket=MySQL8
socket=MySQL -
使用生成的密码登录mysql,例如:mysql -uroot -pgvTuqg-PV4ek 登录。-pgvTuqg-PV4ek是我的临时密码。
-
注意:在mysql5.7环境里,虽然可以设置default_authentication_plugin来改变认证加密方式,但是一般不会去设置。在mysql8.0下,默认变成了default_authentication_plugin=caching_sha2_password,包括你刚初始化的root用户也是这个认证加密方式,这样的结果是让你除非用新的协议驱动,例如必须用8.0自带的mysql客户端才行,当前有很多数据库工具和链接包都不支持“caching_sha2_password”,这样就连接不上数据库,造成不兼容的情况,幸好,是可以改回旧的方式的.修改my.ini
default_authentication_plugin=mysql_native_password
然后重启 -
登录后首先修改root的针对localhost的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
- 如果需要远程连接,需要创建针对’%'的用户
create user 'root'@'%' identified by '123456';
- 创建相应的数据库
create database test;
- 为test数据库创建用户
CREATE USER 'testuser'@'localhost' IDENTIFIED BY '123456';
- 为用户授予访问相应数据库的权限
第一个为localhost用户,第二个为远程用户
GRANT ALL PRIVILEGES ON xx_db.* TO 'testuser'@'localhost';
GRANT ALL PRIVILEGES ON xx_db.* TO 'testuser'@'%' ;
- 用navicat连接数据库连接不上,执行下列命令
alter user 'root'@'%' identified with mysql_native_password by 'root';
alter user 'root'@'localhost' identified with mysql_native_password by 'root';