基于CentOS7的MySQL-5.7的安装及基本操作
简介
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
定义
数据库,简单来说是本身可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。
特点
- 结构化储存大量的数据信息,方便用户进行有效的检索和访问
- 有效的保持数据信息的一致性、完整性,降低数据冗余
- 满足应用的共享和安全方面的要求。
安装实验
实验环境
CentOS7虚拟机一台
[MySQL的源代码编译包]MySQL-5.7.17.tar.gz
c++运行库boost_1_59_0
###实验配置
首先安装相关的环境包
[root@bogon ~]# yum install -y ncurses ncurses-devel bison cmake gcc gcc-c++
创建MySQL的管理用户
[root@bogon ~]# useradd -s /sbin/nologin mysql
解压缩相应的软件包(MySQL-5.7.17)
[root@bogon mysql]# tar zxvf mysql-5.7.17.tar.gz -C /opt
解压缩c++运行库至/usr/local/目录下
[root@bogon mysql]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
切换目录到/usr/local/目录下,然后对boost文件进行重命名
[root@bogon local]# mv boost_1_59_0/ boost
然后切换至MySQL的安装目录,进行编译配置
[root@bogon mysql-5.7.17]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
> -DSYSCONFDIR=/etc \
> -DSYSTEMD_PID_DIR=/usr/local/mysql \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
> -DMYSQL_DATADIR=/usr/local/mysql/data \
> -DWITH_BOOST=/usr/local/boost \
> -DWITH_SYSTEMD=1
配置完成后就是进行二进制的转换和编译安装了
[root@bogon mysql-5.7.17]# make && make install
修改mysql工作文件夹的属主和属组
[root@bogon mysql-5.7.17]# chown -R mysql:mysql /usr/local/mysql/
修改MySQL的主配置文件
[root@bogon mysql-5.7.17]# vim /etc/my.cnf
//在行首插入
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
//删除原来的mysqld的配置参数,重新插入
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
修改完上面的主配置文件后,修改配置文件的属主和属组
[root@bogon mysql-5.7.17]# chown mysql:mysql /etc/my.cnf
添加环境变量
[root@bogon mysql-5.7.17]# echo'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@bogon mysql-5.7.17]# echo 'export PATH' >> /etc/profile
[root@bogon mysql-5.7.17]# source /etc/profile
初始化数据库
[root@bogon mysql-5.7.17]# cd /usr/local/mysql/
[root@bogon mysql]#
[root@bogon mysql]# bin/mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data
// **注:初始化这里可能会遇到一个报错信息:error:too many arguments (first extra is '');error:Aborting**
解决方法:切换目录/usr/local/mysql/,ls查看当前目录下有哪些文件,应该会找到一个data(数据)的文件夹,但是文件夹可能为空,所以这里我们直接rm -rf data;删除data文件夹即可,然后继续初始化数据库
最后将mysqld的管理脚本拷贝到系统目录下,使系统能够识别
[root@bogon mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@bogon mysql]# systemctl daemon-reload //刷新识别
[root@bogon mysql]# systemctl start mysqld //启动MySQL服务
[root@bogon mysql]# netstat -anpt | grep 3306 //查看MySQL的3306端口是否被开启
最后关闭防火墙及增强性安全功能,就可以设置登录数据库的密码了
[root@bogon mysql]# systemctl stop firewalld.service
[root@bogon mysql]# setenforce 0
此时就可以mysql数据库的登入了,但是有个问题,初始化数据库时默认生成了一个密码,但这个密码是空的,所以我们还要进行密码的设定
[root@bogon mysql]# mysqladmin -u root -p password "abc123"
然后会提示输入密码:
因为初始化时生成的密码是空的,所以直接回车,然后密码就设置成功了
此时在重新登入一次,使用新密码abc123
就可以登入MySQL命令行模式了。
然后我们进行数据库的基本操作
[root@localhost ~]# mysql -u root -p
Enter password: //输入密码,我们设置的密码是abc123
mysql> show databases; //查看数据库信息
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
5 rows in set (0.01 sec)
mysql> create database school; //添加一个school的数据库
Query OK, 1 row affected (0.00 sec)
mysql> use school; //进入school的数据库
Database changed
mysql> create table info (id int,name char(10),score decimal(5,2)); //创建一个表
Query OK, 0 rows affected (0.11 sec)
mysql> desc info; //查看表结构
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | char(10) | YES | | NULL | |
| score | decimal(5,2) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> select * from info; //查看表内数据
Empty set (0.00 sec) //这里还未插入任何数据,所以为空
mysql> insert into info (id,name,score) values (1,'zhangsan',75.5);
Query OK, 1 row affected (0.00 sec)
mysql> insert into info (id,name,score) values (2,'lisi',77.5);
Query OK, 1 row affected (0.00 sec)
mysql> insert into info (id,name,score) values (3,'wangwu',80);
Query OK, 1 row affected (0.00 sec) //连续插入三个数据
mysql> select * from info; //此时在查看表内数据,发现就有数据存入在表内
+------+----------+-------+
| id | name | score |
+------+----------+-------+
| 1 | zhangsan | 75.50 |
| 2 | lisi | 77.50 |
| 3 | wangwu | 80.00 |
+------+----------+-------+
3 rows in set (0.00 sec)
mysql> update info set name='zhaoliu' where id=3; //修改id=3的数据的name为zhaoliu
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from info; //再次查看表信息
+------+----------+-------+
| id | name | score |
+------+----------+-------+
| 1 | zhangsan | 75.50 |
| 2 | lisi | 77.50 |
| 3 | zhaoliu | 80.00 | //原先的wangwu就被修改为zhaoliu
+------+----------+-------+
3 rows in set (0.00 sec)
mysql> delete from info where id=2; //删除id=2的表内数据
Query OK, 1 row affected (0.00 sec)
mysql> select * from info;
+------+----------+-------+
| id | name | score |
+------+----------+-------+
| 1 | zhangsan | 75.50 |
| 3 | zhaoliu | 80.00 | //这里原先的id=2的数据lisi就被删除了
+------+----------+-------+
2 rows in set (0.00 sec)
mysql> drop table info; //删除info表
Query OK, 0 rows affected (0.01 sec)
mysql> select * from info; //此时在查看表信息,就会报错,该表不存在,因为已经被我们删除了
ERROR 1146 (42S02): Table 'school.info' doesn't exist
mysql> show databases; //先查看有哪些数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> drop database school; //删除school的数据库
Query OK, 0 rows affected (0.00 sec)
mysql> show databases; //再次查看时,就可以看到school的数据库已经被删除了
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
更多MySQL内容请期待;MySQL索引与事务、MySQL数据库管理。。。。。。。。
转载于:https://blog.51cto.com/13659301/2133623