本文包括mysql服务的安装配置,和简单的使用,还包括了对mysql用户帐号的受权管理,前部分为安装,后面一半为用户受权管理及简单使用(增删改查):mysql
安装前准备:
一、centos7一个,准备系统映像,自行配置yum仓库;
二、下载安装所需软件包,:下载连接,提取码:9lig sql
1、安装配置MySQL数据库:数据库
为了确保MySQL数据库功能的完整性、可定制性,我采用了源代码编译安装的方式安装MySQL数据库系统,MySQL5.X系列版本的使用最为普遍,该版本的稳定性、兼容性都不错,下载源码包的官方站点为 https://www.mysql.com 。vim
如今MySQL已经被甲骨文公司收购了,并且甲骨文公司有意将MySQL发展为一个收费的产品,因此Linux为了不之后的版权问题,就将MySQL数据库改为了MariaDB,MariaDB和MySQL在功能和使用上,并无太大的区别,不过呢,大多数认为MySQL源码安装比使用Linux系统盘中的MariaDB要好一些,因此,仍是使用源码安装吧,起码如今仍是免费的。centos
一、为了不发生程序冲突、端口冲突等问题,能够先执行如下命令,进行删除系统自带的mysql程序:服务器
[root@localhost ~]# yum -y erase mysql
二、挂载centos系统盘,安装ncurses-devel包:ide
[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
三、因为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 #配置,编译安装
四、建立专门用来运行mysql服务的用户,此用户不须要直接登陆到系统:centos7
[root@localhost cmake-2.8.6]# groupadd mysql [root@localhost cmake-2.8.6]# useradd -M -s /sbin/nologin mysql -g mysql
五、将下载的mysql源码包解压,并进行配置,编译及安装(千万要注意大小写,不要打错配置项,就算错误也能够继续后续的安装,可是,最后服务是没法启动的,千万不要打错字母,千万不要打错字母,千万不要打错字母,重要的事情说三遍):3d
[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 #编译并安装
上述各个配置项中的含义以下:
六、对数据库目录进行权限设置:
[root@localhost mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql
七、创建配置文件:
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/下
八、初始化数据库(若数据库初始化时配置错误的话,将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
九、设置环境变量(为了方便在任何目录下使用mysql命令):
[root@localhost mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile [root@localhost mysql-5.6.36]# . /etc/profile #当即生效
十、添加系统服务(两种方法,看完这一块,再选择其中之一便可):
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命令来设置开机自动启动。
十一、启动服务并登陆到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命令工具。
2、数据库用户受权及简单操做(增删改查):
一、授予权限:
grant 权限列表 on 库名.表名 to 用户名@来源地址 [ identified by '密码']
使用grant语句,须要注意如下几点:
grant用法示例:
mysql> grant select on test.* to 'zhangsan'@'localhost' identified by '123456' ; #建立一个用户名为张三,密码为123456,用本地主机登陆,对test库中全部的表能够执行select语句。
二、查看zhangsan使用本地主机登陆的权限:
mysql> show grants for 'zhangsan'@'localhost';
三、撤销权限:
mysql> revoke all on test.* from 'zhangsan'@'localhost';
须要注意的是,赋予权限时是怎么指定库和表的,撤销时必须以一样的方式指定,若赋予权限时使用test.user(test库中的user表),那么,撤销权限时若使用test.*将会报错。
四、查看当前服务器中的全部库:
mysql> show databases;
五、使用use语句切换库,而且查看库中的表:
mysql> use mysql; #切换至mysql库 mysql> show tables; #查看库中的全部表
六、查看表的结构:
mysql> use mysql; #切换至mysql库 mysql> describe user; #查看表的结构
七、建立新的库:
mysql> create database test2; #建立一个名为test2的库。
八、建立新的表:
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)); #新建表名为员工信息。包含的列有姓名、年龄、工号等,并将工号设置为主键。
九、向刚刚的表中插入一条员工信息:
mysql> insert into yuangonxinxi(xingming,xingbie,nianling,gonghao) values ('zhangsan','nan','25','100');
十、查询表中的数据(也可加where语句来指定查询特定的行,或使用列名而不用星号来查询特定的列):
mysql> select * from yuangonxinxi;
十一、修改数据记录:
mysql> update yuangonxinxi set nianling='30' where xingming='zhangsan'; #修改zhagnsan的年龄为30
十二、删除数据记录:
mysql> delete from yuangonxinxi where xingming='zhangsan'; #删除zhangsan的数据记录
1三、删除刚刚建立的数据表:
mysql> drop table test2.yuangongxinxi;
1四、、删除刚才建立的库:
mysql> drop database test2;