共计 5754 个字符,预计需要花费 15 分钟才能阅读完成。
一、MySQL 服务基础
MySQL 是一个真正的多线程,多用户的 SQL 数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。
MySQL 项目在 08 年以前是由 MySQL AB 公司进行开发、发布和支持,之后历经 Sun 公司收购 MySQL AB 公司,Oracle 公司收购 Sun 公司的过程,目前 MySQL 项目由 Oracle 公司负责运营和维护。
二、MySQL 的编译安装
为了确保 MySQL 数据库功能的完整性、可定制性,我采用了源代码编译安装的方式安装 MySQL 数据库系统,MySQL5.X 系列版本的使用最为广泛,该版本的稳定性、兼容性都不错,下载源码包的官方站点为 https://www.mysql.com。
1、准备工作
下载安装所需软件包:
[root@CentOS01 ~]# mount /dev/cdrom /mnt/ <!-- 挂载系统光盘 -->
[root@centos01 ~]# groupadd mysql <!-- 创建管理 mysql 的组 -->
[root@centos01 ~]# useradd -M -s /sbin/nologin mysql -g mysql <!-- 创建管理 mySQL 数据库的用户 -->
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-* <!-- 删除 yum 源里所有以 Centos 开头的文件 -->
[root@centos01 ~]# yum -y install ncurses-devel <!-- 安装 mysql 依赖程序 ncurses-devel-->
2、安装 cmake 包
[root@centos01 ~]# umount /mnt/ <!-- 卸载光盘,切换 Linux 光盘 -->
[root@centos01 ~]# mount /dev/cdrom /mnt/ <!-- 挂载 Linux 光盘 -->
[root@centos01 ~]# mount /dev/cdrom /mnt/ <!-- 解压缩编译 mysql 工具 cmake-->
[root@centos01 ~]# cd /usr/src/cmake-2.8.6/ <!-- 进入 cmake 目录 -->
[root@centos01 cmake-2.8.6]# ./configure <!-- 配置 cmake-->
[root@centos01 cmake-2.8.6]# gmake && gmake install <!-- 编译安装 cmake 程序 -->
3、源码编译及安装
[root@centos01 ~]# tar zxvf /mnt/mysql-5.5.22.tar.gz -C /usr/src/ <!-- 解压 mysql 程序 -->
[root@centos01 ~]# cd /usr/src/mysql-5.5.22/ <!-- 进入 mysql 目录 -->
[root@centos01 mysql-5.5.22]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
-DSYSCONFDIR=/etc <!-- 配置 mysql 程序 -->
[root@centos01 mysql-5.5.22]# make && make install <!-- 编译安装 mysql-->
上述配置命令中,各选项的含义如下:
- -DCMAKE_INSTALL_PREFIX: 指定 MyQSL 数据库程序安装到某目录下,如目录 /usr/local/mysql。
- -DSYSCONFDIR:指定初始化参数文件目录。
- -DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf-8。
- -DDEFAULT_COLLATION: 指定默认使用的字符集校对规则,utf8_general_ci 是适用于 utf- 8 字符集的通用规则。
- -DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。
4、安装后其他调整
[root@centos01 ~]# chown -R mysql:mysql /usr/local/mysql/ <!-- 设置安装目录数据的所有者 -->
[root@centos01 ~]# cd /usr/src/mysql-5.5.22/ <!-- 进入 mysql 目录 -->
[root@centos01 mysql-5.5.22]# cp support-files/my-medium.cnf /etc/my.cnf <!-- 生成 mysql 服务配置文件 -->
cp:是否覆盖 "/etc/my.cnf"?y <!-- 输入 y -->
[root@centos01 ~]# vim /etc/profile <!-- 设置环境变量 -->
# /etc/profile
PATH="$PATH:/usr/local/mysql/bin/"
[root@centos01 ~]# source /etc/profile <!-- 立即生效 -->
[root@centos01 mysql-5.5.22]# cp support-files/mysql.server /etc/init.d/mysqld <!-- 生成 mysql 系统服务控制文件 -->
[root@centos01 mysql-5.5.22]# chmod +x /etc/init.d/mysqld <!-- 设置服务的执行权限 -->
[root@centos01 ~]# chkconfig --add mysqld <!-- 添加系统服务 -->
[root@centos01 ~]# chkconfig --level 35 mysqld on <!-- 添加系统服务 -->
[root@centos01 ~]#/usr/local/mysql/scripts/mysql_install_db
--user=mysql --basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
<!-- 初始化管理数据的账户数据库位置和数据位置 -->
5、启动 MySQL 服务
[root@centos01 ~]# systemctl enable mysqld <!-- 设置开机自动启动 -->
[root@centos01 ~]# systemctl start mysqld <!-- 启动 MySQL 服务 -->
[root@centos01 ~]# netstat -anptu | grep 3306 <!-- 监听 mysql 服务是否启动 -->
三、访问 MySQL 数据库
MySQL 数据库系统是一个典型的 C /S(客户端 / 服务器)架构的应用。要访问 MySQL 数据库需要使用专门的客户端软件。在 Linux 系统中,最简单、易用的 MySQL 客户端软件是其自带的 mysql 命令工具。
1、登录到 MySQL 服务器
经过安装后的初始化过程,MySQL 数据库的默认管理员用户名为 root,密码为空。
登录成功后将会进入提示符为“mysql>”的数据库操作环境,用户可以输入各种操作语句对数据库进行管理。每条 MySQL 操作语句以分号“;”表示结束,输入时可以不区分大小写。
[root@centos01 ~]# mysql -u root -p <!--“-u”选项用于指定认证用户,“-p”选项来进行密码校验,默认 root 密码为空,回车键即可登录 -->
New password: <!--Enter 键 -->
mysql> exit <!-- 断开连接 -->
[root@centos01 ~]# mysqladmin -u root password <!-- 给数据库 root 用户设置密码 -->
New password: <!-- 输入密码 -->
Confirm new password: <!-- 确认密码 -->
[root@centos01 ~]# mysql -u root -p <!--root 用户连接数据库 -->
Enter password: <!-- 输入密码 -->
mysql> quit <!-- 断开数据库连接 -->
四、使用 MySQL 数据库
mysql> show databases; <!-- 查看数据库 -->
mysql> use myqsl; <!-- 切换数据库 mysql 库中 -->
mysql> show tables; <!-- 查看 mysql 库中的表 -->
mysql> describe user; <!-- 查看表的结构 -->
mysql> create database bdqn; <!-- 新建数据库名字是 bdqn-->
mysql> drop database bdqn; <!-- 删除数据库 bdqn-->
mysql> create table stuinfo(姓名 char(16), 性别 char(10), 年龄 char(10), 联系电话 char(11),Email 地址 char(20)); <!-- 创建表,表名字是 stuinfo,第一列名字是姓名,第二列名字为性别,第三列名字为年龄,第四列名字为联系电话,第五列名字为 Email 地址 -->
mysql> drop table stuinfo; <!-- 删除表 stuinfo-->
mysql> insert into stuinfo (姓名, 性别, 年龄, 联系电话,Email 地址) value ('李焱鑫',’男’,’20’,'18232013151',’2807489749@qq.com’);
!--stuinfo 表插入数据 -->
mysql> insert into stuinfo value ('吴大狼','男','19','11111111111','11111111@qq.com');
<!-- 第二种方式插入数据 -->
mysql> insert into stuinfo value ('张航','男','15','22222222222','22222222@qq.com');
<!-- 第二种方式插入数据 -->
mysql> insert into stuinfo value ('曾宪猴','男','8','33333333333','33333333@qq.com');
<!-- 第二种方式插入数据 -->
mysql> select * from stuinfo; <!-- 查看数据库表的所有数据 -->
+-----------+--------+--------+--------------+-------------------+
| 姓名 | 性别 | 年龄 | 联系电话 | Email 地址 |
+-----------+--------+--------+--------------+-------------------+
| 李焱鑫 | 男 | 20 | 18232013151 | 2807489749@qq.com |
| 吴大狼 | 男 | 19 | 11111111111 | 11111111@qq.com |
| 张航 | 男 | 15 | 22222222222 | 22222222@qq.com |
| 曾宪猴 | 男 | 8 | 33333333333 | 33333333@qq.com |
+-----------+--------+--------+--------------+-------------------+
mysql> select * from stuinfo where 姓名 ='李焱鑫'; <!-- 使用条件查询满足条件显示 -->
+-----------+--------+--------+--------------+-------------------+
| 姓名 | 性别 | 年龄 | 联系电话 | Email 地址 |
+-----------+--------+--------+--------------+-------------------+
| 李焱鑫 | 男 | 20 | 18232013151 | 2807489749@qq.com |
+-----------+--------+--------+--------------+-------------------+
mysql> update stuinfo set 姓名 ='LiYanXin' where 姓名 ='李焱鑫'; <!-- 修改中文名字为英文 -->
mysql> delete from stuinfo where 姓名 ='LiYanXin'; <!-- 删除 LiYanXin 记录 -->
五、数据库用户授权
MySQL 数据库的 root 用户账号拥有对所有库、表的全部权限,频繁使用 root 账号会给数据库服务器带来一定的安全风险。通常在实际工作中会建立一些低权限的用户,只负责一部分库、表的管理和维护操作,甚至可以对查询、修改、删除记录等各种操作做进一步的细化限制,从而将数据库的风险降至最低。
1、授予权限
GRANT 语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT 语句将会创建新的用户,否则,GRANT 语句用于修改用户信息。
语句格式如下:
GRANT 权限列表 ON 库名. 表名 TO 用户名 @来源地址 [IDENTIFIED BY ‘ 密码 ’]使用 GRANT 语句时,需要注意的事项如下:
- 权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,Select 允许查询;Insert 插入数据;Update 更新数据;Delete 删除数据;All 给所有权限,增加删改查;使用“all”表示所有权限,可授权执行任何操作。
- 库名. 表名:用于指定授权操作的库和表的名称,其中可以使用通配符“”。“auth.”表示授权操作的对象为 auth 库中的所有表。
- 用户名 @来源地址:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址。
- IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分,则用户的密码将为空。
mysql> grant all on bdqn.* to 'rundb'@'localhost' identified by 'pwd@123'; <!-- 授权用户 rundb 对 bdqn 数据库中所有表有完全控制权限 -->
mysql> show grants for 'rundb'@'localhost'; <!-- 查看授权的权限 -->
mysql> revoke all on bdqn.stuinfo from 'rundb'@'localhost'; <!-- 取消授权 -->