Windows下安装MySQL5.7/8.0
一、配置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拉。