MySQL 5/8 纯净版在两种OS部署
Windows 10
8.0+ MySQL离线安装ZIP
1.下载zip文件
在MySQL官网,Windows(x86,64-bit),ZIP Archive
注:非第二个——Debug Binaries & Test Suite
2.新建初始化配置文件my.ini
需要修改:C:\mysql\mysql-8.0.11
绝对地址路径,你zip文件解压的路径更改到下面对应部分
建议:文件层级为
MySQL | mysql-8.0.11 |
---|---|
sqldata |
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\\Program Files\\MySQL\\mysql-8.0.16-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=D:\\Program Files\\MySQL\\mysql-8.0.16-winx64\\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置SQL模式
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 设置时区
default-time-zone = '+8:00'
3.初始化数据库
以管理员身份打开 cmd 命令行工具,切换目录:到bin目录
>
盘符(d:\ ) 【直接cd跨盘符绝对路径是不被识别的】
>
cd 绝对路径(cd D:\Program Files\MySQL\mysql-8.0.16-winx64\bin)
>
mysqld --initialize --console
记得保存临时密码:
2019-06-14T06:26:12.107918Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: [???]
4.注册启动MySQL服务
注意!!!管理员管理员管理员
在3的基础上继续输入以下命令
>
mysqld --install
>
net start mysql
>
net stop mysql
安装MySQL服务
启动MySQL服务
5.登录MySQL数据库
>
mysql -h 主机名 -u 用户名 -p
-h : 指定所要登录的MySQL主机名, 登录本机(localhost或 127.0.0.1)可省略;
-P : 端口号
-u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果登录用户密码为空, 可忽略。
6.修改root临时密码
8.0版本之前与8.0版本之后的root用户密码的设置方式不同【安装完后,生成临时密码,登入后修改】
mysql> ALTER USER "root"@"localhost" IDENTIFIED BY "你的新密码";
7.修改远程登陆权限
8.0版本:
mysql> use mysql;
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '********';
mysql> flush privileges;
8.修改时区
持久化修改
1.my.ini 配置文件【需重启】
[mysqld]
default-time-zone = '+8:00'
2.命令参数写入,自MySQL 8.0 GA版本开始支持将
mysql> set persist time_zone='+0:00';
非持久化修改
1.数据库本次运行临时设置
mysql> set time_zone='+8:00';
2.客户端URL修改
jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezone=GMT%2B8
验证修改
mysql> select version();
mysql> show variables like '%time_zone%';
mysql> select now();
9.修改字符集
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8
CentOS 7
5.7+ MySQL离线安装RPM
【安装完后首次调用mysqladmin】:
[root@localhost opt]# mysqladmin -u root password 'Root123456'
1.下载rpm文件
MySQL官网:https://www.mysql.com
下载首页:https://dev.mysql.com/downloads/mysql/
Redhat / CentOS 7 RPM
8.0.17:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar
5.7.27:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar
Generic Linux
8.0.17:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
5.7.27:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz 文件列表
mysql-community-client-5.7.27-1.el7.x86_64.rpm
mysql-community-common-5.7.27-1.el7.x86_64.rpm
mysql-community-devel-5.7.27-1.el7.x86_64.rpm
mysql-community-embedded-5.7.27-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.27-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.27-1.el7.x86_64.rpm
mysql-community-libs-5.7.27-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm
mysql-community-server-5.7.27-1.el7.x86_64.rpm
mysql-community-test-5.7.27-1.el7.x86_64.rpm
**mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar **文件列表
mysql-community-client-8.0.17-1.el7.x86_64.rpm
mysql-community-common-8.0.17-1.el7.x86_64.rpm
mysql-community-devel-8.0.17-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.17-1.el7.x86_64.rpm
mysql-community-libs-8.0.17-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.17-1.el7.x86_64.rpm
mysql-community-server-8.0.17-1.el7.x86_64.rpm
mysql-community-test-8.0.17-1.el7.x86_64.rpm
2.检测已有冲突及文件权限
2.1、CentOS6
rpm -qa | grep mysql
2.2、CentOS7
rpm -qa | grep mysql
rpm -qa | grep mariadb
如果有的话使用卸载命令:rpm -e --nodeps mariadb-libs
2.3、/tmp目录权限,当前用户是否拥有此目录的全部去权限
否则使用:sudo chmod -R 777 /tmp
注:root用户拥有全部权限:drwxrwxrwt. 10 root root 281 9月 11 19:49 tmp
3.RPM安装
5.5.54仅用安装 client,server两个RPM文件,其余可省略。
5.7.27要求安装4个,顺序为:—> common libs client server
# 安装perl
[root@localhost opt]# yum install -y perl
# 1.1 此命令会自动安装当前opt目录下的,全部rpm包,并且会自动分析欠缺的依赖项,通过网络下载安装。
[root@localhost opt]# yum -y localinstall *.rpm
# 1.2 手动按序逐个安装
[root@localhost opt]# rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm
启动前,版本验证
[root@localhost log]# mysqladmin --version
mysqladmin Ver 8.42 Distrib 5.7.27, for Linux on x86_64
尝试启动服务,自启验证
[root@localhost opt]# systemctl start mysqld
或老版本命令
[root@localhost opt]# service mysqld start
[root@localhost opt]# systemctl list-unit-files | grep mysqld
mysqld.service enabled
mysqld@.service disabled
启动后,进程验证,安装位置查看 /usr/sbin/mysqld
[root@localhost opt]# ps -ef | grep mysqld
mysql 16077 1 0 20:16 ? 00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root 16137 7357 0 20:32 pts/0 00:00:00 grep --color=auto mysql
可能遇到的错误
1.perl
错误:依赖检测失败
/usr/bin/perl
被 mysql-community-server-5.7.27-1.el7.x86_64 需要
net-tools
被 mysql-community-server-5.7.27-1.el7.x86_64 需要
perl(Getopt::Long)
被 mysql-community-server-5.7.27-1.el7.x86_64 需要
perl(strict)
被 mysql-community-server-5.7.27-1.el7.x86_64 需要
解决:yum install -y perl
4.初次登陆数据库
可能根据版本不同,mysql-5.5.54 是可以直接 空密码登陆的。而在mysql-5.7.27 使用临时密码登陆。
# mysql-5.5.54
# 初次可空密码登陆,再可使用命令 /usr/bin/mysqladmin -u root password 'newPW' 初始化密码
[root@localhost opt]# mysql
mysql>exit
[root@localhost opt]# /usr/bin/mysqladmin -u root password 'root'
# mysql-5.7.27及之后
# 查找日志文件,获取自动生成的 root用户的临时密码
[root@localhost opt]# cat /etc/my.cnf
log-error=/var/log/mysqld.log
[root@localhost opt]# grep "password" /var/log/mysqld.log
2019-09-11T12:06:37.251756Z 1 [Note] A temporary password is generated for root@localhost: uPX!am/e5kyv
[root@localhost opt]# mysql -u root -p uPX!am/e5kyv
# 修改root临时密码
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> set password for root@localhost = password('root');
或
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
5.修改远程登陆权限
第一步:关闭Linux防火墙
# CentOS 7
# 查询防火墙状态
[root@localhost ~]# firewall-cmd --state
# 关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
# 关闭防火墙开机自启
[root@localhost ~]# systemctl disable firewalld.service
或者
# 不关闭防火墙,public开放特定端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
防火墙相关命令:https://www.jianshu.com/p/411274f96492
第二步:为MySQL的root用户远程登陆MySQL设置权限
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Root123456' with grant option;
mysql> flush privileges;
第三步:如果使用的是Navicat且连接出错,在my.conf配置文件添加
[mysqld]
skip-name-resolve
6.修改字符集
查看数据库字符集
mysql> show variables like 'character_set_%';
修改 my.cnf 配置文件
# mysql-5.5.54
令完整版配置文件 `my-huge.cnf` 覆盖已存在的 `/etc/my.cnf`配置文件,此文件在安装目录`/usr/share/mysql/`中
[root@localhost opt]# cp /usr/sbin/mysqld/my-hug.cnf /etc/my.cnf
[root@localhost opt]# vi /etc/my.cnf
[client]
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
character_set_client=utf8mb4
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8mb4
# mysql-5.7.27及之后
[root@localhost opt]# vi /etc/my.cnf
[mysql]
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
注1:原库的设定不会发生变化,配置文件中的参数修改只对新建的数据库生效
已生成的库表字符集设定变更
# 更改数据库字符集
mysql> alter database mydb character set 'utf8';
# 更改数据表字符集
mysql> alter table mytbl convert to character set 'utf8';
注2:如果原有的数据是用非’utf8’编码的话,数据本身不会发生改变。
7.忘记密码并重置
#第1种方式
1.以安全模式启动MySQL服务
[root@localhost ~]# systemctl status mysqld
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# 5.7版本
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('root') where USER='root';
mysql> flush privileges;
# 5.7以前的版本
mysql> UPDATE mysql.user SET Password=PASSWORD('123456') where USER='root';
mysql> flush privileges;
#第2种方式
2.修改 my.cnf 配置文件
[mysqld]
skip-grant-tables
#重启服务
systemctl restart mysqld
mysql -u root -p
#直接回车进入mysql
# 5.7版本
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('root') where USER='root';
mysql> flush privileges;
# 5.7以前的版本
mysql> UPDATE mysql.user SET Password=PASSWORD('123456') where USER='root';
mysql> flush privileges;
8.查看默认配置文件路径
$ mysql --help|grep 'my.cnf'
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf