文档库 / 战国册
搜索文档…
⌃K

MySQL8.0 安装与配置

一. 检查旧版本

查看是否安装过MySQL:
rpm -qa | grep -i mysql
强力卸载已安装的包:
rpm -e --nodeps [包名]

二. 安装新版本

从官网下载rpm安装包:
wget http://dev.mysql.com/get/mysql-community-server-8.0.20-1.el7.x86_64.rpm
wget http://dev.mysql.com/get/mysql-community-client-8.0.20-1.el7.x86_64.rpm
wget http://dev.mysql.com/get/mysql-community-common-8.0.20-1.el7.x86_64.rpm
wget http://dev.mysql.com/get/mysql-community-libs-8.0.20-1.el7.x86_64.rpm
按以下顺序(依赖关系)逐一安装:
rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm
如果安装community-libs时报以下错:
mariadb-libs is obsoleted by mysql-community-libs-8.0.20-1.el7.x86_64
则需先卸载mariadbb-libs
yum remove mariadbb-libs.x86_64
所有包安装完成后,查看是否成功:
mysqladmin --version

三. 初始化

初始化目的是创建数据文件目录和系统数据库、产生随机root密码。
mysqld --initialize
尝试启动:
systemctl start mysqld
如果启动失败,可能原因有:
  1. 1.
    未授予mysql目录权限,解决方法:
    chown -R mysql:mysql /var/lib/mysql/
  2. 2.
    升级后的数据文件与旧版本冲突,简单粗暴的解决方法是直接删除数据目录(对于已经存在生产数据的情况需通过其他方式处理):
    rm -rf /var/lib/mysql/

四. 安全设置

查看初始化随机生成的root密码:
cat /var/log/mysqld.log | grep password
进入安全设置程序:
mysql_secure_installation
以上命令执行后会出现如下选择:
  1. 1.
    提示输入密码:上一步查看的临时密码
  2. 2.
    是否设置root密码:Y
  3. 3.
    是否删除系统创建的匿名用户:Y
  4. 4.
    是否禁止root用户远程登录:n
  5. 5.
    是否删除test数据库:Y
  6. 6.
    是否重载权限表:Y
  7. 7.
    完成。

五. 修改密码

mysql -uroot -ppassword
use mysql;
update user set authentication_string='' where user='root';
ALTER USER [email protected] IDENTIFIED WITH mysql_native_password BY 'newpassword';
flush privileges;

六. 字符集设置

vi /etc/my.cnf 打开配置文件,在 [mysqld] 段增加:character_set_server = utf8,重启MySQL后登入mysql查看编码设置结果:show variables like 'character%';

七. 基本操作

1. 开机启动及日常启停

systemctl enable mysqld
systemctl start mysqld
systemctl stop mysqld
systemctl restart mysqld

2. 创建数据库和表

create database [db_name] character set utf8;
use db_name;
drop table if exists user;
create table user (
openId char(32) not null,
nickname varchar(20) not null default '', # 昵称
createTime datetime not null default now(), # 创建时间
status tinyint not null default 0, # 用户状态
primary key (openId)
) engine = InnoDB, default charset = utf8;

3. 导出数据库

mysqldump -uroot -p db_name > /file/path/filename.sql