本文包括mysql服务的安装配置,和简单的使用,还包括了对mysql用户账号的授权管理,前部分为安装,后面一半为用户授权管理及简单使用(增删改查):
安装前准备:
1、centos7一个,准备系统映像,自行配置yum仓库;
2、下载安装所需软件包,:下载链接,提取码:9lig
一、安装配置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 #编译并安装
上述各个配置项中的含义如下:
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;