因为课程需要,电脑上安装了MySQL5.7,原来安装的是安装版,却突然出现服务无法正常启动的情况,各种尝试后仍无法解决,无奈尝试解压版。过程如下;
1.从官网下载压缩包https://dev.mysql.com/
如图,下载压缩版。
2.解压后内部情况如下,把文件更名为mysql,放在根目录下(什么名字无所谓,主要是为了方便,我选择在了C盘下,C:\mysql)
3.配置my.ini文件
解压缩后,目录里面有个my-default.ini的文件,这是官方配置文件样板,把这个文件拷贝一份放在同级目录里,更名为my,ini,然后写配置文件如下,写完后保存
英文注解部分为官方样板内容,如果你自己配置的话,需要注意修改相关路径
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\mysql
#设置mysql数据库的数据的存放目录
datadir=C:\mysql\data
#许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
4.安装MySQL
以管理员身份打开cmd窗口,这里说一下,win+R组合键打开的cmd窗口并不是管理员模式,可以找到 菜单--所有程序--附件--命令提示符,然后右键以管理员身份运行(针对Windows7系统而言)。到C:\mysql\bin下,输入命令;mysqld install 等待提示安装成功,输入命令:mysqld --initialize,这一步用于初始化data目录,官方的压缩包解压后并没有data文件夹,运行命令后,自动在根目录下生成data文件夹,最后,输入命令:net start mysql,启动服务。
5.配置环境变量
6.设置root管理员密码
新版本的mysql,root用户的密码不能为空,这时,我们的root是没有密码的,因此我们需要设置。
要设置mysql密码就得进入mysql里,但是没有密码就不好进,这时候就需要打开安全模式,或者说是免密码登录
打开my.ini,在行末追加 skip-grant-tables,保存退出,重新启动mysql,然后输入命令:mysql -u root -p,两次直接回车进入mysql,进行密码重置。
接着在上面的cmd里操作,输入sql语句如下:
use mysql;
update user set authentication_string=password("123456") where user="root";
flush privileges;
quit
注意:MySQL5.7的密码更改命令可能与以前的版本有所不同,输入update mysql.user set password=password('root') where user='root'时会提示ERROR 1054 (42S22): Unknown column 'password' in 'field list',这是因为mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
修改完密码后,回到my.ini配置文件,把刚才添加的那句skip-grant-tables注释掉,否则任何人都可以登录你的mysql,安全很有问题。
然后重启mysql服务,就能以新的密码登录了
但是登录时还是碰到了问题,错误提示ERROR 1820,需要设置密码,那就设置密码:set password=password("123456");