基于centos7搭建MySQL数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于centos7搭建MySQL数据库相关的知识,希望对你有一定的参考价值。

本文包括mysql服务的安装配置,和简单的使用,还包括了对mysql用户账号的授权管理,前部分为安装,后面一半为用户授权管理及简单使用(增删改查):

安装前准备:
1、centos7一个,准备系统映像,自行配置yum仓库;
2、下载安装所需软件包,链接: https://pan.baidu.com/s/13YAoybOtX55XKGQIzIxsIA
一、安装配置MySQL数据库:

为了确保MySQL数据库功能的完整性、可定制性,我采用了源代码编译安装的方式安装MySQL数据库系统,MySQL5.X系列版本的使用最为广泛,该版本的稳定性、兼容性都不错,下载源码包的官方站点为 https://www.mysql.com

现在MySQL已经被甲骨文公司收购了,而且甲骨文公司有意将MySQL发展为一个收费的产品,所以Linux为了避免以后的版权问题,就将MySQL数据库改成了MariaDB,MariaDB和MySQL在功能和使用上,并没有太大的区别,不过呢,大多数认为MySQL源码安装比使用Linux系统盘中的MariaDB要好一些,所以,还是使用源码安装吧,起码现在还是免费的。

1、为了避免发生程序冲突、端口冲突等问题,可以先执行以下命令,进行删除系统自带的mysql程序:


[root@localhost ~]# yum -y erase mysql

2、挂载centos系统盘,安装ncurses-devel包:


[root@localhost ~]# mount /dev/cdrom /media
[root@localhost ~]# cd /media/Packages/
[root@localhost Packages]# rpm -ivh ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm 

3、由于mysql 5.x系列版本需要cmake编译安装,所以继续安装cmake包:


[root@localhost media]# tar zxf cmake-2.8.6.tar.gz -C /tmp                 #解包
[root@localhost media]# cd /tmp/cmake-2.8.6/
[root@localhost cmake-2.8.6]# ./configure && gmake && gmake install      #配置,编译安装

4、创建专门用来运行mysql服务的用户,此用户不需要直接登录到系统:


[root@localhost cmake-2.8.6]# groupadd mysql
[root@localhost cmake-2.8.6]# useradd -M -s /sbin/nologin mysql -g mysql

5、将下载的mysql源码包解压,并进行配置,编译及安装(千万要注意大小写,不要打错配置项,就算错误也可以继续后续的安装,但是,最后服务是无法启动的,千万不要打错字母,千万不要打错字母,千万不要打错字母,重要的事情说三遍):


[root@localhost media]#tar zxf mysql-5.6.36.tar.gz -C /tmp              #解压至/tmp目录
[root@localhost cmake-2.8.6]# cd /tmp/mysql-5.6.36             #切换至展开后的源码目录
[root@localhost mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
[root@localhost mysql-5.6.36]# make && make install          #编译并安装

3、由于mysql 5.x系列版本需要cmake编译安装,所以继续安装cmake包:
技术图片

6、对数据库目录进行权限设置:


[root@localhost mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql

7、建立配置文件:

centos 7系统下默认支持MariaDB数据库,因此系统默认的/etc/my.cnf配置文件中是MariaDB的配置文件,而在mysql的源码目录中提供了mysql数据库默认的样本配置文件,在启动mysql数据库之前,需要先将原有的my.cnf文件替换为mysql提供的配置文件内容。


[root@localhost mysql-5.6.36]# rm -rf /etc/my.cnf              #删除原有配置文件
[root@localhost mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf     
#复制源码包中的配置文件到/etc/下

8、初始化数据库(若数据库初始化时配置错误的话,将mysql安装目录中的data目录删掉后重新初始化即可):


[root@localhost mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql 
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 

9、设置环境变量(为了方便在任何目录下使用mysql命令):


[root@localhost mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost mysql-5.6.36]# .  /etc/profile             #立即生效

10、添加系统服务(两种方法,看完这一块,再选择其中之一即可):

1)、如果希望添加mysqld系统服务,以便通过systemctl 进行管理,可以直接使用源码包中提供的服务脚本,如下:


[root@localhost mysql-5.6.36]# cp support-files/mysql.server /usr/local/mysql/bin/mysqld.sh   
#复制到安装目录中
[root@localhost mysql-5.6.36]# chmod +x /usr/local/mysql/bin/mysqld.sh         
#赋予执行权限

2)、创建mysql系统服务的配置文件/usr/lib/systemd/system/mysqld.service,将其添加为mysqld系统服务:
技术图片

上面的配置文件纯手打,编写完以后,保存退出后,即可使用systemctl工具来控制mysql数据库服务了。

方法二:

若嫌编写配置文件麻烦,可以换另一种方法:

当对/usr/local/mysql/bin/mysqld.sh 赋予执行权限后,继续以下操作:

[root@localhost mysql-5.6.36]# cp /usr/local/mysql/bin/mysqld.sh /etc/init.d/mysqld
[root@localhost mysql-5.6.36]# vim /etc/init.d/mysqld

技术图片

修改后,保存退出。继续执行如下命令:


[root@localhost mysql-5.6.36]# chkconfig --add mysqld            #添加为系统服务

以上便是两种添加系统服务的方法,二选一即可,只是方法二无法使用systemctl enable mysqld命令来设置开机自动启动。

11、启动服务并登录到mysql服务器:


[root@localhost mysql-5.6.36]# systemctl start mysqld                #启动服务
[root@localhost mysql-5.6.36]# systemctl status mysqld             #查看服务状态是否正常
[root@localhost mysql-5.6.36]# mysql -u root              #使用root用户登录到mysql数据库

需要注意的是,此root账号与系统root账号没有半毛钱关系,只是凑巧mysql的管理员账号也是root。初次安装没有密码。可以使用下面命令来进行配置密码:


[root@localhost /]# mysqladmin -u root password                #为用户root设置密码
New password:                 #输入密码
Confirm new password:              #再次确认

如果用户有密码,想要对密码进行更改,那么,要使用如下命令:


[root@localhost /]# mysqladmin -u root -p password            #更改密码
Enter password:                                 #输入旧密码
New password:              #输入新密码
Confirm new password:                 #再次确认

在用户没有密码的情况下,使用以下命令来登录到mysql数据库:


[root@localhost mysql-5.6.36]# mysql -u root 

若用户有密码,则需要加 -p选项:


[root@localhost /]# mysql -u root -p

登录到mysql服务器后,即可执行SQL语句,每条mysql操作语句以分号“;”结尾,若没有输入分号便按了回车键,则相当于换行。一切命令不区分大小写,使用status可以查看当前数据库服务的基本信息,使用exit可以退出mysql命令工具。
二、数据库用户授权及简单操作(增删改查):

1、授予权限:


grant  权限列表  on  库名.表名   to  用户名@来源地址  [ identified  by  ‘密码‘]

使用grant语句,需要注意以下几点:

技术图片

grant用法示例:


mysql> grant select on test.* to ‘zhangsan‘@‘localhost‘ identified by ‘123456‘ ;     
#创建一个用户名为张三,密码为123456,用本地主机登录,对test库中所有的表可以执行select语句。

2、查看zhangsan使用本地主机登录的权限:


mysql> show grants for ‘zhangsan‘@‘localhost‘;

3、撤销权限:


mysql> revoke all on test.* from ‘zhangsan‘@‘localhost‘;
需要注意的是,赋予权限时是怎么指定库和表的,撤销时必须以同样的方式指定,若赋予权限时使用test.user(test库中的user表),那么,撤销权限时若使用test.*将会报错。

4、查看当前服务器中的所有库:


mysql> show databases;

5、使用use语句切换库,并且查看库中的表:


mysql> use mysql;                     #切换至mysql库

mysql> show tables;              #查看库中的所有表

6、查看表的结构:


mysql> use mysql;                        #切换至mysql库

mysql> describe user;            #查看表的结构

7、创建新的库:


mysql> create database test2;                  #创建一个名为test2的库。

8、创建新的表:

mysql> create table 表名 (列名1 类型,列名2 类型,.... ,primary key (主键名));

示例,创建一个简单的员工信息表:


mysql> create table yuangongxinxi (xingming char(16) not null, 
xingbie char(4)), nianling int, gonghao int, primary key (gonghao));
#新建表名为员工信息。包含的列有姓名、年龄、工号等,并将工号设置为主键。

9、向刚刚的表中插入一条员工信息:


mysql> insert into yuangonxinxi(xingming,xingbie,nianling,gonghao) values (‘zhangsan‘,‘nan‘,‘25‘,‘100‘);

10、查询表中的数据(也可加where语句来指定查询特定的行,或使用列名而不用星号来查询特定的列):


mysql> select * from yuangonxinxi;

11、修改数据记录:


mysql> update yuangonxinxi set nianling=‘30‘ where xingming=‘zhangsan‘;              #修改zhagnsan的年龄为30

12、删除数据记录:


mysql> delete from yuangonxinxi where xingming=‘zhangsan‘;                      #删除zhangsan的数据记录

13、删除刚刚创建的数据表:


mysql>  drop table test2.yuangongxinxi;

14、、删除刚才创建的库:


mysql> drop database test2;

————感谢阅读~

以上是关于基于centos7搭建MySQL数据库的主要内容,如果未能解决你的问题,请参考以下文章

Centos7搭建基于GTID的MySQL主从复制架构

centos7 mysql cluster集群搭建基于docker

在CentOS7上搭建MySQL主从复制与读写分离

基于Apache+php+mysql的许愿墙网站的搭建

基于CentOS7的服务器搭建(LAMP环境)

Centos7搭建基于GTID的MySQL的M-M-S-S架构