Windows
1.:到MySQL官网下载压缩版本,下载后文件为mysql-5.7.20-winx64.zip,解压到D:\develop\mysql-5.7.20-winx64;
2.:在系统变量Path末尾添上D:\develop\mysql-5.7.20-winx64\bin;
3:复制D:\develop\mysql-5.7.20-winx64目录下my-default.ini(5.7.18以后发布包中没有这文件),改名为my.ini,my-default.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.
[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
4.:修改my.ini,在[mysqld]下加入以下内容:
basedir =D:/develop/mysql-5.7.20-winx64
datadir = D:/develop/mysql-5.7.20-winx64/data
port = 3306
character-set-server=utf8mb4
collation-server=utf8mb4_bin
max_connections=1500
skip-name-resolve
5.:以管理员身份启动命令行工具。
cd D:\develop\mysql-5.7.20-winx64\bin
mysqld --install xx 将MySQL安装成windows的服务,xx是服务名,可以不指定
mysqld --initialize 初始化数据库文件(为root生成随机密码,密码保存在datadir/计算机名.err文件)或者mysqld --initialize-insecure初始化(不会为root生成密码)。此时只允许root用户在localhost登录MySQL。
mysqld --remove xx 卸载服务xx
6:执行net start xx 启动服务,net stop xx停止服务。
7:执行 mysql -u root -p登录,如果root用户使用随机密码登录的,那么在修改密码前输入sql语句比如use mysql就会出现错误:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement。此时可以使用 SET PASSWORD = PASSWORD('123456') 修改密码后再操作。
CentOS7
1:到MySQL官网选择RHEL版本,下载 RPM Bundle文件,下载后文件名为 mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar。
2:tar xvf mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar,解压文件到当前目录,这个文件包含了以下rpm文件,不需要全部安装。
3:在不清楚需要安装哪些rpm的情况下,先尝试安装server,系统会提示需要的依赖,最好用root用户,否则安装过程容易出现权限问题。su - root。
yum install mysql-community-server-5.7.20-1.el7.x86_64.rpm
此时会提示和mariadb-libs-1:5.5.52-1.el7.x86_64冲突,卸载它。
yum remove mariadb-libs-1:5.5.52-1.el7.x86_64
yum install mysql-community-server-5.7.20-1.el7.x86_64.rpm
此时会提示需要安装mysql-community-client(x86-64),安装它。
yum install mysql-community-client-5.7.20-1.el7.x86_64.rpm
此时会提示需要安装mysql-community-libs(x86-64),安装它。
yum install mysql-community-libs-5.7.20-1.el7.x86_64.rpm
此时会提示需要安装mysql-community-common(x86-64),安装它。
yum install mysql-community-common-5.7.20-1.el7.x86_64.rpm
这步一般是成功了,然后安装刚刚没安装好的rpm包。
总结下,一般按如下顺序安装即可:
yum install mysql-community-common-5.7.20-1.el7.x86_64.rpm
yum install mysql-community-libs-5.7.20-1.el7.x86_64.rpm
yum install mysql-community-client-5.7.20-1.el7.x86_64.rpm
yum install mysql-community-server-5.7.20-1.el7.x86_64.rpm
4:安装好后,就可以启动MySQL了,systemctl start mysqld。systemctl status mysqld可以查看运行状态,systemclt enable mysqld设置为开机启动。系统会创建mysql用户组和mysql用户来管理MySQL服务。
MySQL配置文件位于/etc/my.cnf,打开它。修改my.cnf,在[mysqld]下加入以下内容:
port = 3306
character-set-server=utf8mb4
collation-server=utf8mb4_bin
max_connections=1500
skip-name-resolve
默认配置文件中datadir=/var/lib/mysql是MySQL存储数据和日志的目录,log-error=/var/log/mysqld.log是MySQL的错误日志,在首次启动MySQL后,会随机生成root用户的密码并写入到里面,打开这个错误日志,找到下面这行,A temporary password is generated for root@localhost: Iz*0A1W1BouJ。Iz*0A1W1BouJ就是初始密码了。此时只允许root用户在localhost登录MySQL。
执行 mysql -u root -p登录,如果root用户使用随机密码登录的,那么在修改密码前输入sql语句比如use mysql就会出现错误:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement。此时可以使用 SET PASSWORD = PASSWORD('12345678') 修改密码后再操作。如果提示Your password does not satisfy the current policy requirements,是因为密码不够安全,执行set global validate_password_policy=0,再执行SET PASSWORD = PASSWORD('12345678') 。