zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Windows下安装MySQL5.7/8.0

Windows安装 8.0 mysql5.7
2023-09-11 14:22:18 时间

一、配置mysql

先把mysql压缩包解压,在mysql目录建立my.ini

5.7

 1 [mysqld]
 2 character_set_server = utf8
 3 [mysqld_safe]
 4 character_set_server = utf8
 5 [mysql]
 6 default-character-set = utf8
 7 [mysql.server]
 8 default-character-set = utf8
 9 [client]
10 default-character-set = utf8

8.0

 1 [mysqld]
 2 # 设置3306端口
 3 port=3306
 4 # 设置mysql的安装目录
 5 basedir=D:\\datacenter\\mysql-8.0
 6 # 设置mysql数据库的数据的存放目录
 7 datadir=D:\\datacenter\\mysql-8.0\\data
 8 # 允许最大连接数
 9 max_connections=200
10 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
11 max_connect_errors=1000
12 # 服务端使用的字符集默认为UTF8
13 character-set-server=utf8
14 # 创建新表时将使用的默认存储引擎
15 default-storage-engine=INNODB
16 [mysql]
17 # 设置mysql客户端默认字符集
18 default-character-set=utf8
19 [client]
20 # 设置mysql客户端连接服务端时默认使用的端口
21 port=3306
22 default-character-set=utf8

二、初始化mysql

到bin目录执行

mysqld --initialize

此时会生成data目录,就是建立好数据库基本数据了。

三、启动mysql

直接到bin目录执行

mysqld --console 或直接  mysqld就是前台启动mysql

当然你也可以把mysql安装为服务

mysqld -install  

拓展:用sc可打开被禁用的服务,语法是:

sc config 服务名 start=demand //手动   

sc condig 服务名 start=auto //自动

sc config 服务名 start=disabled //禁用

sc start 服务名  //同net start mysql

sc stop 服务名  //同net stop mysql

备注:mysqld的服务名叫mysql,SC命令似乎是只管发送指令,而不管服务启动或停止的结果,NET命令会等待执行结束,命令执行后,会等待启动成功后再执行一下条命令。

四、登录mysql

在bin目录执行

mysql -uroot -p 直接回车、回车

结果ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password)

这是因为从5.7开始初始化mysql总会生成一个root的随机密码,在linux中可以在初始化时看到,在windows初始化mysql时竟然看不到!而且,使用skip-grant-tables、mysqladmin等方式充值密码都是无效的!

只有从日志文件中找到这个随机密码

linux目录获取密码:grep "temporary password" /var/log/mysqld.log

windows目录获取密码:findstr "temporary password" mysql/data/user.err

输入密码即可登录啦。

五、修改密码

使用随机密码登录后执行

alter user 'root'@'localhost' identified by 'root';

以后再想修改密码

set password for root@localhost = password('root');

至此,环境就搭建好了,可以开始玩耍了...

六、远程连接

配置完后可能本机能够连上,但其他机器连不上

is not allowed to connect to this MySQL server

这是因为没有开放mysql链接权限

我们发现,都是本地的这些用户才能访问

mysql> update user set host = '%' where user = 'root';

mysql> FLUSH PRIVILEGES;

就OK拉。