
MySQL的3种安装操作
MySQL安装管理:
- 1.YUM安装
- 2.二进制安装
- 3.源码编译安装
Mysql版本选择:
- 选择GA版本6-12月产品(GA稳定版)
- MYSQL常用版本5.6.34 5.6.36 5.6.38 5.7.18 5.7.20
1.yum安装mysql
MySQL Yum仓库提供了用于在Linux平台上安装MySQL服务器,客户端和其他组件的RPM包。
mysql-yum安装下载地址 https://dev.mysql.com/downloads/repo/yum/ mysql-yum历史版本 http://repo.mysql.com/yum/注意: 使用MySQL Yum仓库时,默认选择安装最新的MySQL版本。如果需要使用低版本请按如下操作。
1.安装MySQL仓库源
[root@sql ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm2.选择并启用适合当前平台的发行包
//列出所有MySQL发行版仓库 [root@sql ~]# yum repolist all|grep mysql //禁用8.0发行版仓库, 启用5.6发行版仓库 [root@sql ~]# yum install yum-utils [root@sql ~]# yum-config-manager --disable mysql80-community [root@sql ~]# yum-config-manager --enable mysql57-community 注意 可以手动编辑/etc/yum.repos.d/mysql-community.repo 文件配置仓库 [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql3.通过以下命令安装MySQL, 并启动MySQL
[root@sql ~]# yum install -y mysql-community-server [root@sql ~]# systemctl start mysqld [root@sql ~]# systemctl enable mysqldMySQL服务器初始化(仅适用于MySQL 5.7)在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:
- 服务器已初始化。
- 在数据目录中生成SSL证书和密钥文件。
- validate_password插件安装并启用。
- 超级用户帐户'root'@'localhost'已创建。
超级用户的密码被设置并存储在错误日志文件中。要显示它,请使用以下命令:
[root@vm-70-160 ~]# grep "password" /var/log/mysqld.log 2018-04-28T07:11:51.589629Z 1 [Note] A temporary password is generated for root@localhost: jHlRHucap3+7通过使用生成的临时密码登录并尽快更改root密码并为超级用户帐户设置自定义密码
[root@vm-70-160 ~]# mysql -uroot -pjHlRHucap3+7 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bgx123.com';注意
MySQL的validate_password插件默认安装。将要求密码至少包含大写、小写、数字、特殊字符、并且总密码长度至少为8个字符。
2.二进制安装Mysql
1.软件部分部署
1.创建软件目录:
[root@db01 ~]# mkdir -p /server/tools上传软件到此目录
[root@db01 ~]# ls mysql-5.7.20-linux-glibc2.12-x86_64.tar2.解压并改名为mysql
[root@db01 app]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar [root@db01 app]# mv mysql-5.7.20 /server/tools/mysql [root@db01 app]# ls -l /server/tools/mysql total 36 drwxr-xr-x 2 root root 4096 Mar 4 14:55 bin -rw-r--r-- 1 7161 31415 17987 Sep 13 2017 COPYING drwxr-xr-x 2 root root 55 Mar 4 14:55 docs drwxr-xr-x 3 root root 4096 Mar 4 14:55 include drwxr-xr-x 5 root root 229 Mar 4 14:55 lib drwxr-xr-x 4 root root 30 Mar 4 14:55 man -rw-r--r-- 1 7161 31415 2478 Sep 13 2017 README drwxr-xr-x 28 root root 4096 Mar 4 14:55 share drwxr-xr-x 2 root root 90 Mar 4 14:55 support-files3.修改环境变量
[root@db01 bin]# vi /etc/profile export PATH=/server/tools/mysql/bin:$PATH [root@db01 bin]# source /etc/profile4.建立mysql用户和组
[root@db01 bin]# useradd -s /sbin/nologin -M mysql5.创建相关目录并修改权限
数据路径:
[root@db01 bin]# mkdir /data/mysql -p [root@db01 bin]# chown -R mysql.mysql /server/tools/* [root@db01 bin]# chown -R mysql.mysql /data/*2.数据部分配置
1.初始化数据(建库)
说明:
一套完整的数据库管理系统的基本结构软件部分
存放位置:/server/tools/mysql数据部分
/data/mysql
系统相关数据:维持mysql数据库软件程序,正常运行的系统数据
用户数据:和用户的应用程序有关的1.2.初始化<系统>数据,初始化管理员的临时密码
1.卸载系统自动安装mariadb-libs并且安装依赖
[root@db01 ~]# yum remove mariadb-libs [root@db01 ~]# yum install -y libaio-devel2.初始化数据(5.7之后版本):
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/server/tools/mysql --datadir=/data/mysql3.初始化数据(5.7之前):
[root@db01 ~]# /server/tools/mysql/scripts/mysql_install_db --user=mysql --basedir=/server/tools/mysql --datadir=/data/mysql4.初始化数据结果
- 生成系统相关数据
/data/mysql- 具体参数作用
--initialize,--initialize-insecure initialize: 开启MySQL安全策略 initialize-insecure :关闭MySQL安全策略 安全策略: 1.密码长度:12以上 2.密码复杂度: 数字,大小字符,特殊符号 3.密码默认过期时间为180天 4.初始化完成后会立即生成一个临时密码 A temporary password is generated for root@localhost: anAWFnV(a49g3.配置文件部分
1.书写默认配置文件
[root@db01 ~]# vi /etc/my.cnf [mysqld] basedir=/server/tools/mysql datadir=/data/mysql socket=/tmp/mysql.sock server_id=6 port=3306 [mysql] socket=/tmp/mysql.sock prompt=db01-[\\d]>2.Centos7使用systemd管理mysql
[root@db01 ~]# vi /etc/systemd/system/mysqld.service [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 ExecStart=/server/tools/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 [root@db01 mysql]# /etc/init.d/mysqld stop**注意:**将原来模式启动mysqld先关闭,然后再用systemd管理。
排查问题:/server/tools/mysql/bin/mysqld --defaults-file=/etc/my.cnf3.centos6 sys-v模式管理mysqld
[root@db01 support-files]# cd /server/tools/mysql/support-files [root@db01 support-files]# cp mysql.server /etc/init.d/mysqld [root@db01 support-files]# /etc/init.d/mysqld restart [root@db01 support-files]# /etc/init.d/mysqld stop [root@db01 support-files]# /etc/init.d/mysqld start [root@db01 support-files]# /etc/init.d/mysqld status4.更改root密码
//第一种方式, 需要知道密码 [root@sql ~]# mysqladmin -uroot -p123 password 'Bgx123456' Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. //第二种方式, 登录MySQL, 修改相应表 mysql> update mysql.user set authentication_string=password('123456') where user='root'; mysql> flush privileges;
3.源码编译安装Mysql
1.下载软件
官方自带(boost版本mysql)
[root@db01 mysql]# mkdir -p /server/tools/ [root@db01 tools]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz [root@db01 tools]# tar xf mysql-boost-5.7.20.tar.gz [root@db01 tools]# mv mysql-5.7.20/ mysql安装依赖包
[root@db01 mysql]# yum install -y cmake gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel2.创建关键目录
[root@db01 mysql]# mkdir -p /application/mysql [root@db01 mysql]# mkdir -p /application/mysql/data [root@db01 mysql]# useradd mysql [root@db01 mysql]# chown -R mysql:mysql /application/*3.cmake进行预编译:
[root@db01 mysql]# cmake -DCMAKE_INSTALL_PREFIX=/application/mysql/ \ -DMYSQL_DATADIR=/application/mysql/data \ -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DMYSQL_UNIX_ADDR=/application/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled \ -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost ++++++++++++++++++++++++++++++++++++++++++++ 说明: -DWITH_SYSTEMD=1 ------>是否支持systemd方式管理MySQL -DDOWNLOAD_BOOST=1 ------>自动下载boost支持 -DWITH_BOOST=./boost ------>本地boost目录 Socket: 为了简化本地连接MySQL,提供一种封装形式的TCP/IP协议。 -DMYSQL_UNIX_ADDR=/application/mysql/mysql/mysql.sock ++++++++++++++++++++++++++++++++++++++++++++++4.编译安装:
[root@db01 mysql]# make && make install
4.Mysql忘记密码
方式1:
核心参数: --skip-grant-tables #跳过授权表(mysql.user) --skip-networking #跳过网络用户连接(1)停数据库
[root@db01 mysql]# pkill mysqld [root@db01 mysql]# /etc/init.d/mysqld stop [root@db01 mysql]# systemctl stop mysqld(2)跳过授权表启动数据库
[root@db01 mysql]# mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking &(3)修改密码
方法一:
[(none)]>flush privileges; [(none)]>grant all on *.* to root@'localhost' identified by 'abc' with grant option; [root@db01 mysql]# pkill mysqld [root@db01 mysql]# systemctl start mysqld [root@db01 mysql]# mysql -uroot -p方法二:
[(none)]>update mysql.user set authentication_string=PASSWORD('123') where user='root' and host='localhost';(4)停库,正常启动数据库
[root@db01 mysql]# mysqladmin shutdown [root@db01 mysql]# systemctl start mysqld(5)测试
[root@db01 mysql]# mysql -uroot -p123456(6)额外补充,将密码改为空
[(none)]>update mysql.user set authentication_string=PASSWORD('') where user='root' and host='localhost'; flush privileges;方式2:
跳过授权表
[root@sql ~]# vim /etc/my.cnf [mysqld] skip-grant-tables # 新增跳过授权表 //重启数据库生效 [root@sql ~]# systemctl restart mysqld查看表字段
//查看表字段 mysql> select user,host,authentication_string from mysql.user; +---------------+-----------+-------------------------------------------+ | user | host | authentication_string | +---------------+-----------+-------------------------------------------+ | root | localhost | *C786BB788F276CD53317C80C1957E5F5696751F0 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | +---------------+-----------+-------------------------------------------+ 3 rows in set (0.00 sec)更新密码
//5.7.6版本后更新密码方式 mysql> update mysql.user set authentication_string=password('123456') where user='root'; mysql> exit//5.7.6版本前更新密码方式 mysql> update mysql.user set password=password('123456') where user="root" and host="localhost";修改成功生效数据库
[root@sql ~]# vim /etc/my.cnf [mysqld] #skip-grant-tables #注释重启数据库生效
//重启数据库生效 [root@sql ~]# systemctl restart mysqld //使用新密码登录数据库 [root@sql ~]# mysql -uroot -p123456 mysql>
5.插件扩展
安装mysql插件
yum -y install epel-release python-pip python-devel pip install mycli