Windows环境

下载地址

官方部署文档

1
D:\Develop\mysql-8.0.18-winx64>bin\mysqld.exe --defaults-file=D:\Develop\mysql-8.0.18-winx64\my.ini --initialize --console
1
2
3
4
5
2019-10-24T08:47:21.549556Z 0 [System] [MY-013169] [Server] D:\Develop\mysql-8.0
.18-winx64\bin\mysqld.exe (mysqld 8.0.18) initializing of server in progress as
process 7612
2019-10-24T08:47:34.895556Z 5 [Note] [MY-010454] [Server] A temporary password i
s generated for root@localhost: 6#gL3pJ#qyh.
1
2
# 安装服务
D:\Develop\mysql-8.0.18-winx64>bin\mysqld.exe install
1
net start mysql

Linux环境

Yum安装

下载链接 参考文档

下载mysql80-community-release-el7-3.noarch.rpm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 安装rpm源
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
# 编辑,找到Enable to use MySQL 5.7,改为enabled=1,其他版本设置成enabled=0,
# 同理这个方法可以按照别的版本
vim /etc/yum.repos.d/mysql-community.repo
# 检查只有MySQL 5.7启动
yum repolist enabled | grep mysql
# 安装MySQL
sudo yum install mysql-community-server
# 启动MySQL服务器
sudo service mysqld start
# MySQL服务器的状态
sudo service mysqld status
# 查看超级用户的密码
sudo grep 'temporary password' /var/log/mysqld.log
# 登录mysql
mysql -uroot -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
# 默认mysql的root用户不支持远程访问,开启访问权限
GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
# 修改密码设置级别
set global validate_password_policy=0;
set global validate_password_length=1;
# 开启3306端口
firewall-cmd --add-port=3306/tcp
# (a)数据库目录
/var/lib/mysql/
# (b)配置文件
/usr/share /mysql(mysql.server命令及配置文件)
/etc/my.cnf
# (c)相关命令
/usr/bin(mysqladmin mysqldump等命令)
# (d)启动脚本
/etc/rc.d/init.d/(启动脚本文件mysql的目录)

二进制安装

下载地址 参考文档

下载文件: mysql-5.7.28-linux-glibc2.12-x86_64.tar

1
2
3
4
# 查看包中内容
tar -tvf mysql-5.7.28-linux-glibc2.12-x86_64.tar
# mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
# mysql-test-5.7.28-linux-glibc2.12-x86_64.tar.gz
Directory Contents of Directory
bin mysqld server, client and utility programs
docs MySQL manual in Info format
man Unix manual pages
include Include (header) files
lib Libraries
share Error messages, dictionary, and SQL for database installation
support-files Miscellaneous support files

创建用户、用户组

1
2
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

解压发行版文件

1
2
3
cd /usr/local
#tar zxvf /path/to/mysql-VERSION-OS.tar.gz 如果是.gz结尾
tar xvf /path/to/mysql-VERSION-OS.tar

创建软链接

1
2
3
4
# 链接,这里建议使用全路径
ln -s full-path-to-mysql-VERSION-OS mysql
# 解压创建软链接,并且修改所属用户和组
chown -R mysql:mysql mysql

创建并授权

1
2
3
4
cd mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files

创建配置文件

1
2
3
4
cd /etc
touch my.cnf
chown root:root my.cnf
chmod 644 my.cnf
1
2
3
4
5
6
7
8
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF

初始化数据目录

1
2
3
4
cd /usr/local/mysql
mkdir data
chmod 750 data
chown mysql:mysql data

初始化

参数: –initialize 会生成一个随机密码

1
bin/mysqld --initialize --user=mysql

显示下面则初始化成功:

1
2
3
4
5
6
7
8
[root@bogon mysql]# bin/mysqld --initialize --user=mysql
2019-10-23T07:41:12.611481Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-10-23T07:43:00.499738Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-10-23T07:43:00.819667Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-10-23T07:43:00.919776Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: bd1531fb-f568-11e9-bc4b-46afd4d32e02.
2019-10-23T07:43:00.958124Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-10-23T07:43:02.482380Z 0 [Warning] CA certificate ca.pem is self signed.
2019-10-23T07:43:02.643686Z 1 [Note] A temporary password is generated for root@localhost: Wsi!(otie8de

命令添加到环境变量中

1
2
3
4
5
vim /etc/profile
# 添加
PATH=$PATH:/usr/local/mysql/bin
# 使生效
source /etc/profile

启动

1
bin/mysqld_safe --user=mysql &
1
2
3
4
mkdir /var/log/mysql/
touch /var/log/mysql/mysql.log
# 如果日志没内容,授权
chown -R mysql:mysql /var/log/mysql/mysql.log

配置systemd

参考文档 通用二进制包安装指南

  • 创建文件

这两个路径任意一个都可以

1
2
3
touch /etc/systemd/system/mysqld.service
# 建议创建到这个路径下面
touch /usr/lib/systemd/system/mysqld.service

这里注意pid的路径,写入下面内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

# Have mysqld write its state to the systemd notify socket
Type=forking

PIDFile=/var/run/mysql/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysql/mysqld.pid $MYSQLD_OPTS

# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 10000

Restart=on-failure

RestartPreventExitStatus=1

# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1

PrivateTmp=false
  • 重启
1
systemctl daemon-reload
  • 操作
1
systemctl {start|stop|restart|status} mysqld

设置开机启动

参考文档

1
2
3
4
5
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
# 某些系统可能用下面命令
chkconfig --level 345 mysql on

相关问题


1
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决办法: ln -s /var/lib/mysql/mysql.sock mysql.sock


重启无法创建PID

1
2
mkdir /var/run/mysql
chown mysql:mysql -R /var/run/mysql

相关命令

1
2
3
4
5
6
7
8
# 关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
# 加入开机启动
systemctl enable redis.service
# 查看开机是否启动成功
systemctl is-enabled redis.service

相关文档

创建文件mysql-init.txt,写入以下内容

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

执行

1
mysqld --init-file=C:\\mysql-init.txt