本文更新于2020-05-04。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 目录

安装

在Windows下可以采用noinstall包或图形化安装,在Linux下可以采用apt-get/dpkg、yum/rpm、二进制包、源码包安装。

使用apt-get安装

以Deepin 15.9下安装MySQL 5.7为例。

apt-get install mysql-server

安装过程无初始化MySQL的root密码提示。登录可采用如下方法之一:

  • 使用操作系统root用户直接使用mysql免密登录。
  • /etc/mysql/debian.cnf中查看组[client]user(如:debian-sys-maint)和password,使用其登录。

登录后修改密码:

ALTER USER root@localhost
IDENTIFIED WITH mysql_native_password BY 'password'

注意,如此修改root@localhost的密码后,mysql.user表中的plugin将从auth_socket变为mysql_native_password,此后能使用密码登录,但不能再用操作系统root用户直接使用mysql免密登录。修改debian-sys-maint@localhost的密码同理。

使用dpkg安装

以Debian 8.6下安装MySQL 5.7为例。

因默认的apt仓库将MySQL相关的包移除,需要自己去官网下载,以及下载相关的依赖包。

因包之间的依赖关系,各dpkg命令必须按序执行。

在安装mysql-community-server时,会提示初始化MySQL的root密码。

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-server_5.7.19-1debian8_amd64.deb-bundle.tar
wget http://ftp.br.debian.org/debian/pool/main/liba/libaio/libaio1_0.3.110-1_amd64.deb
wget http://ftp.br.debian.org/debian/pool/main/m/mecab/libmecab2_0.996-1.1_amd64.deb
wget http://ftp.br.debian.org/debian/pool/main/n/numactl/libnuma1_2.0.10-1_amd64.deb

dpkg -i libaio1_0.3.110-1_amd64.deb
dpkg -i libmecab2_0.996-1.1_amd64.deb
dpkg -i libnuma1_2.0.10-1_amd64.deb

mkdir mysql
tar -xv -C mysql -f mysql-server_5.7.19-1debian8_amd64.deb-bundle.tar
cd mysql
dpkg -i mysql-common_5.7.19-1debian8_amd64.deb
dpkg -i mysql-community-client_5.7.19-1debian8_amd64.deb
dpkg -i mysql-client_5.7.19-1debian8_amd64.deb
dpkg -i mysql-community-server_5.7.19-1debian8_amd64.deb

使用rpm安装

以CentOS 7.5下安装MySQL 8.0为例。

卸载MariaDB

yum服务器上移除了MySQL相关的软件包。CentOS7默认安装MariaDB相关的库,可能会与MySQL冲突,先将其卸载。

  1. 查看已安装的MariaDB相关rpm包。

    rpm -qa | grep mariadb
    
  2. 查看已安装的MariaDB相关yum包,包名需根据rpm命令的结果判断。

    yum list mariadb-libs
    
  3. 移除已安装的MariaDB相关yum包,包名需根据yum list命令的结果判断。

    yum remove mariadb-libs
    

安装MySQL

下面安装时如缺少Perl相关的包,执行yum install -y perl-Module-Install

因包之间的依赖关系,各rpm命令必须按序执行。

wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar

mkdir mysql
tar -xv -C mysql -f mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
cd mysql
rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm

初始化密码

  1. 启动MySQL服务,第一次启动时会初始化数据目录/var/lib/mysql

    service mysqld start
    
  2. 使用初始化后root@localhost的临时密码登录,临时密码记录在/var/log/mysql.log,其中有一行:“A temporary password is generated for root@localhost:”。

  3. 修改root@localhost的密码,密码必须足够复杂,如包含大写、小写、数字、符号。

    ALTER USER root@localhost
    IDENTIFIED WITH mysql_native_password BY 'password'
    

修改密码认证插件

MySQL 8.0.4开始使用caching_sha2_password密码认证插件,很多旧版的客户端都不支持,为了后向兼容可修改为mysql_native_password。如不需修改,跳过此步骤。

在MySQL配置文件/etc/my.cnf[mysqld]组中增加一行(配置文件本身带有这一行,只需把注释符去掉):default_authentication_plugin=mysql_native_password。然后重启MySQL服务。

同时,需修改用户使用的密码认证插件(如该用户不会在旧版客户端登录,则可忽略此步骤):

ALTER USER user@host
IDENTIFIED WITH mysql_native_password BY 'password'

或在创建用户时:

CREATE USER user@host
IDENTIFIED WITH mysql_native_password BY 'password'

服务启动、停止、重启、状态查看

Linux下的MySQL服务名为mysqlmysqld,以mysql为例。

  • 启动:service mysql startsystemctl start mysql
  • 停止:service mysql stopsystemctl stop mysql
  • 重启:service mysql restartsystemctl restart mysql
  • 状态查看:service mysql statussystemctl status mysql

Linux下的文件布局

安装后默认的文件布局如下:

  • /etc/mysql/:配置文件目录。
  • /usr/bin/:客户端程序和脚本目录。
  • /usr/sbin/:mysqld服务器目录。
  • /usr/share/doc/:文档目录。
  • /usr/include/mysql/:包含(头)文件目录。
  • /usr/lib/mysql/:库文件目录。
  • /usr/share/mysql/:错误消息和字符集文件目录。
  • /usr/share/sql-bench/:基准程序目录。
  • /var/lib/mysql/:日志文件(错误日志除外)和数据库文件目录。
  • /var/log/mysql/:错误日志文件目录。

默认数据库

  • information_schema:数据库元数据信息。这是一个虚拟数据库,并不存在于磁盘中。
    • CHARACTER_SETS:所有字符集。
    • COLLATIONS:所有字符集校对规则。
    • COLUMNS:所有列的信息。
    • INNODB_LOCKS:所有的InnoDB锁。
    • INNODB_LOCK_WAITS:所有InnoDB锁的等待。
    • OPTIMIZER_TRACE:优化器trace结果。
    • PARTITIONS:所有分区的信息。
    • PROFILING:所有profiling的信息。
    • ROUTINES:所有存储过程和函数的信息。
    • SCHEMATA:所有数据库的信息。
    • STATISTICS:所有索引的信息。
    • TABLES:所有表的信息。
    • TRIGGERS:所有触发器的信息。
    • VIEWS:所有视图的信息。
  • mysql:用户权限和MySQL运行所需的信息。
    • columns_priv:列权限。
    • db:数据库权限。
    • tables_priv:表权限。
    • user:用户权限。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄