数据库(database):数据库是一个以某种有组织的方式存储的数据集合,是保存有组织的数据的容器。适合存储到数据库的数据:
数据库管理系统(DBMS):数据库管理系统是管理数据库的软件,数据库通过DBMS创建和操纵容器。DBMS在行业中分为两个派系:
企业版本选择(MySQL分支版本):
MySQ行业主流版本, 版本选择建议要上新环境,一般选择官方主流版本5.6、5.7–GA(稳定发布版),6-12月的产品版本:
本次使用MySQL 5.7.20版本(Sep 13,2017)进行学习。
主要提供三种格式的MySQL包的安装:
安装方式 | 包名举例 | 包名含义 | 介绍 |
---|---|---|---|
二进制包 | mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz | 软件名<版本>-<CPU架构>.tar.gz | 二进制包包含了已经过编译,可以马上运行的程序 |
源码包 | mysql-5.7.20.tar.gz | 软件名<版本>.tar.gz | 源代码包里面包括了程序原始的程序代码,需要在计算机上进行编译以后才可以产生可以运行程序,所以从源代码安装的时间会比较长。 |
RPM包 | MySQL-server-5.7.20-1.el6.x86_64.rpm | 软件件名<版本><CPU架构>.rpm | RPM是redhat系列发行版本所用的格式软件包,可使用rpm -ivh安装。yum安装其实就是自动判断rpm包的依赖,一次性把所有需要安装的rpm统一下载安装,其原理和一个个的安装rpm没有本质区别。 |
官网下载source code源码包
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
解压并重命名目录
tar xf mysql-boost-5.7.20.tar.gz mv mysql-boost-5.7.20 mysql
安装依赖包
yum -y install gcc gcc-c++ make cmake ncurses ncurses-devel perl boost boost-doc boost-devel
创建关键用户及目录
mkdir -p /usr/local/mysql mkdir -p /usr/local/mysql/data useradd mysql chown -R mysql.mysql /usr/local/*
cmake进行预编译
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/\ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost
编译安装
make && make install
官网下载MySQL 5.7.20 二进制包
[root@localhost app]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
解压并重命名目录
[root@localhost app]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz [root@localhost app]# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql [root@localhost app]# ls mysql [root@localhost app]# ll mysql/ total 36 drwxr-xr-x. 2 root root 4096 Sep 23 11:43 bin -rw-r--r--. 1 7161 31415 17987 Sep 13 2017 COPYING drwxr-xr-x. 2 root root 55 Sep 23 11:43 docs drwxr-xr-x. 3 root root 4096 Sep 23 11:43 include drwxr-xr-x. 5 root root 229 Sep 23 11:43 lib drwxr-xr-x. 4 root root 30 Sep 23 11:43 man -rw-r--r--. 1 7161 31415 2478 Sep 13 2017 README drwxr-xr-x. 28 root root 4096 Sep 23 11:43 share drwxr-xr-x. 2 root root 90 Sep 23 11:43 support-files
将bin目录添加到环境变量中
[root@localhost app]# vim /etc/profile export PATH=/app/mysql/bin:$PATH [root@localhost app]# source /etc/profile
创建mysql用户和组,并修改mysql目录权限
[root@localhost app]# useradd -M -s /sbin/nologin mysql [root@localhost app]# chown -R mysql.mysql /app/mysql [root@localhost app]# mkdir -p /data/mysql [root@localhost app]# chown -R mysql.mysql /data/mysql
初始化数据(建库)
一套完整的数据库管理系统的基本结构
方法一:初始化数据,初始化管理员的临时密码 [root@localhost app]# mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/data/mysql ... 2021-09-23T04:05:57.310710Z 1 [Note] A temporary password is generated for root@localhost: 1:hl_c2z1bS< 方法二:初始化数据,初始化管理员的密码为空 [root@localhost app]# mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/mysql --initialize:初始化数据 --user:数据库管理员 --basedir:数据库软件放置位置 --datadir:数据库数据放置位置 [root@localhost app]# cd /data/mysql/ [root@localhost mysql]# ls auto.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema sys
扩展:5.6初始化区别
/app/mysql/scripts/mysql_install_db --user=mysql --datadir=/app/mysql/data --basedir=/app/mysql
重要说明:5.7开始,MySQL加入全新的密码安全机制(加入insecure后关闭该机制)
编辑MySQL配置文件/etc/my.cnf(应该默认为空,若有内容表示maraidb没有卸载干净)
[root@localhost ~]# vim /etc/my.cnf [mysqld] user=mysql basedir=/app/mysql datadir=/data/mysql server_id=6 port=3306 socket=/tmp/mysql.sock [mysql] socket=/tmp/mysql.sock prompt=3306 [\\d]>
配置启动脚本
[root@localhost mysql]# cd /app/mysql/support-files [root@localhost support-files]# ./mysql.server start Starting MySQL.Logging to '/data/mysql/localhost.localdomain.err'. . SUCCESS! 将启动脚本复制到/etc/init.d/下 [root@localhost support-files]# cp mysql.server /etc/init.d/mysqld 而后就可以通过service进行管理 [root@localhost ~]# service mysqld stop Shutting down MySQL.. SUCCESS!
使用systemd管理mysql
[root@localhost ~]# vim /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=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000
注意:若mysqld处于启动状态先将其关闭,然后再使用systemd管理。
[root@localhost ~]# service mysqld stop Shutting down MySQL.. SUCCESS! [root@localhost ~]# systemctl start mysqld
安装后的简单管理
# 修改mysql root密码 [root@localhost ~]# mysqladmin -uroot -p password 123456 Enter password: mysqladmin: [Warning] Using a password on the command line interface can be insecure. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. # MySQL登录测试 [root@localhost ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.
查看数据库中的用户密码等信息
5.6版本
select user,password,host from mysql.user;
5.7版本
select user,authentication_string,host from mysql.user;
3306 [(none)]>select user,authentication_string,host from mysql.user; +---------------+-------------------------------------------+-----------+ | user | authentication_string | host | +---------------+-------------------------------------------+-----------+ | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost | +---------------+-------------------------------------------+-----------+ 3 rows in set (0.00 sec)