MySQL yum和源码安装

Mysql 数据库简介

MySQL 是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最用标准化语言。

关系数据库管理系统(Relational Database Management System,RDBMS),是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统 。

数据库一般分为以下两种:关系型数据库,非关系型数据库。

 

MySQL现阶段有免费版本和付费版本,公司里面使用MySQL 多数都是使用免费版本。

Mariadb 数据库是MySQL 数据库原来的团队,后续独立出来进行开发的。

常用的关系型数据库软件有: MYSQL、Mariadb、Oracle、SQL Server、PostgreSQL、DB2等

常用的非关系型数据库软件有: Redis、memcached。

 

Mysql引擎

MySQL 引擎有很多,企业里面主流的myisam、innodb 两种。

MyISAM:主要强调的是性能,其执行数度比InnoDB类型更快,但不提供事务支持,不支持外键,如果执行大量的SELECT(查询)操作,MyISAM是更好的选择,支持表锁。myisam引擎查询性能高。

InnoDB:提供事务支持事务、外键、行级锁等高级数据库功能,可执行大量的INSERT或UPDATE,InnoDB引擎写性能高。

 

Mysql数据库安装

MySQL安装方式有两种,一种是yum/rpm安装,另外一种是tar源码安装。

 

yum安装

Yum 安装方法很简单,执行命令如下即可

[root@www zh]# yum install -y mariadb mariadb-devel mariadb-server

安装完成之后可以查询一下软件是否安装成功

[root@www zh]# rpm -qa | grep mariadb

mariadb-libs-5.5.64-1.el7.x86_64

mariadb-devel-5.5.64-1.el7.x86_64

mariadb-server-5.5.64-1.el7.x86_64

mariadb-5.5.64-1.el7.x86_64

 

源码安装

下载包和解压包

[root@www ]# cd /usr/src/

[root@www src]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.5/mysql-5.5.60.tar.gz  --下载包

[root@www src]# tar -xf mysql-5.5.60.tar.gz  --解压包

 

预编译、编译和安装

[root@www src]# cd mysql-5.5.60

[root@www mysql-5.5.60]# yum install gcc c ncurses-devel libaio bison gcc-c++ git cmake ncurses-devel ncurses -y  --安装编译依赖包(MySQL-5.x以后使用cmake编译安装)Mysql有自己的编译工具,不同nginx的configure工具,用的是cmake工具

 

各个包功能的简单介绍:

gcc         gcc是Linux下的C语言编译工具,mysql源码编译完全由C和C++编写,要求必须安装GCC4.4.6或以上版本

cmake    mysql使用cmake跨平台工具预编译源码,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。安装最新版本即可。

ncurses  字符终端处理库

 

预编译,这里面指定了安装路径和参数,选项如下:

-DCMAKE_INSTALL_PREFIX:指定MySQL安装路径

-DMYSQL_DATADIR:MySQL数据文件路径

-DSYSCONFDIR:配置文件存储路径

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55/ \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/usr/local/mysql55/ \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0

编译和安装

[root@www mysql-5.5.60]make && make install

 

配置MySQL

[root@www mysql-5.5.60]# cp support-files/my-large.cnf  /usr/local/mysql55/my.cnf  --support-files为我们提供了默认的配置文件,自己根据需要选择合适的配置文件拷贝到对应目录下

 

[root@www mysql-5.5.60]# cp support-files/mysql.server /etc/init.d/mysqld  --拷贝服务脚本文件到/etc/init.d/目录下并改名为mysqld,mysqld里面是shell脚本用来启动MySQL

[root@www mysql-5.5.60]# chmod +x  /etc/init.d/mysqld  --给予脚本执行权限

 

[root@localhost mysql-5.5.60]# useradd -s /sbin/nologin  mysql  --创建MySQL用户

[root@www mysql-5.5.60]# mkdir -p  /data/mysql --创建数据目录

[root@www mysql-5.5.60]# chown -R mysql.  /data/mysql  --给数据目录权限

 

[root@www mysql-5.5.60]# /usr/local/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql55  --初始化MySQL

--mysql_install_db 会初始化数据目录,并创建它所包含系统表(如果系统表不存在),它还初始化管理表所需的系统表空间和相关的数据结构。从5.6.8开始mysql_install_db 是个perl脚本,之前是shell脚本。

启动mysql

[root@localhost mysql-5.5.60]# /etc/init.d/mysqld start  --如果碰到下面的报错修改/etc/my.cnf

Starting MySQL.200320 17:46:41 mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'. ERROR! The server quit without updating PID file (/data/mysql/localhost.localdomain.pid).

[root@localhost bin]# vim  /etc/my.cnf  --修改如下

[mysqld]

datadir=/data/mysql

socket=/tmp/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

#[mysqld_safe]

#log-error=/var/log/mariadb/mariadb.log

#pid-file=/var/run/mariadb/mariadb.pid

 

[root@localhost bin]# /etc/init.d/mysqld start

Starting MySQL.. SUCCESS!

 

可以考虑将MySQL加入service服务:

chkconfig --add mysqld

chkconfig --level 35 mysqld on

service mysqld restart

 

数据库操作

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

4 rows in set (0.01 sec)

 

初始化后,默认会有四个数据库

information_schema:信息数据库。主要保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权 限等。通过show databases;查看到数据库信息,也是出自该数据库中得SCHEMATA表。

mysql: mysql的核心数据库。主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。

performance_schema: 用于性能优化的数据库。

 

mysql> use information_schema ;

Database changed

mysql> select * from SCHEMATA;

+--------------+--------------------+----------------------------+------------------------+----------+

| CATALOG_NAME | SCHEMA_NAME        | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |

+--------------+--------------------+----------------------------+------------------------+----------+

| def          | information_schema | utf8                       | utf8_general_ci        | NULL     |

| def          | mysql              | utf8                       | utf8_general_ci        | NULL     |

| def          | performance_schema | utf8                       | utf8_general_ci        | NULL     |

| def          | test               | utf8                       | utf8_general_ci        | NULL     |

+--------------+--------------------+----------------------------+------------------------+----------+

 

 

数据库操作的一些命令

创建数据库

mysql> create database mytest;

Query OK, 1 row affected (0.00 sec)

修改创建数据库的字符集

mysql> alter database mytest default character set utf8;

Query OK, 1 row affected (0.01 sec)

mysql> show create database mytest;

+----------+-----------------------------------------------------------------+

| Database | Create Database                                                 |

+----------+-----------------------------------------------------------------+

| mytest   | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */ |

+----------+-----------------------------------------------------------------+

 

create database zabbix charset=utf8;

或者

mysql> create database if not exists zabbix charset=utf8; --用上面的这条命令创建数据库,如果数据库已经存在就不会报错了

 

mysql> select database ();  --查看当前正在使用哪个数据库

+-------------+

| database () |

+-------------+

| test        |

+-------------+

1 row in set (0.00 sec)

mysql> drop database zabbix;  --删除数据库

 

发布了289 篇原创文章 · 获赞 323 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/104976375