百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

6Linux网络服务之Mysql数据库服务

sinye56 2024-11-18 16:42 2 浏览 0 评论

MySQL数据库系统

一 MySQL简介

提供更丰富更强大的Web应用功能

参考站点:

二 MySQL服务基础

1 MySQL是开源的关系型数据库服务器软件

目前由Oracle公司开发和维护

官方站点:http://dev.mysql.com/downloads

2 MySQL的特点

多线程、多用户

基于C/S(客户端/服务器)架构

简单易用、查询速度快

安全可靠

三 MySQL的编译安装

1 准备工作

1)为了避免发生端口冲突,程序冲突,建议先检查mysql软件的安装情况,确认没有使用RPM方式安装的mysql-server、mysql软件包,否则建议将其卸载。

:rpm -q mysql-server mysql //确认没有使用RPM方式安装mysql-server、mysql

  1. 源码安装需要有开发环境

:rpm -q ncurses* //确认编译的开发环境工具有没有安装

:yum install ncurses* //安装开发工具的编译环境

2 源码编译及安装

1)创建运行用户

为了加强数据库服务的权限控制,建议使用专门的运行用户,用户不需要登录系统,可以不创建宿主文件夹

:useradd -M -u 49 -s /sbin/nologin mysql

  1. 解包

将下载的mysql源码安装包解压,释放到/usr/src/目录下,并切换到源码目录

:mount /dev/cdrom /media //挂载安装包

:cd /media/

:tar zxf mysql-5.1.55.tar.gz -C /usr/src/ //解包

:cd /usr/src/mysql-5.1.55/

  1. 配置

企业网站平台中,可能会用到多种字符集的网页,相应的数据库系统也应该支持不同的字符集编码,在配置过程中,可以将默认使用的字符集设置为utf8,并添加对gbk、gb2312等其他字符集的支持

:./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312 //配置

上述命令中各选项含义如下

--prefix 指定将mysql数据库程序安装到哪个目录,如/usr/src/mysql

--with-charset 指定默认使用的字符集编码,应与校队规则相对应,如utf8

--with-collation 指定默认使用的字符集校队规则

--with-extra-charset 指定额外支持的其他字符集编码

4)调整字符集编码

额外的字符集编码需要进行小的调整才能被完整的支持

:vim include/config.h //添加字符集的支持定义

..............

#define HAVE_CHARSET_gb2312 1

#define HAVE_CHARSET_gbk 1

  1. 编译

:make //编译

6)安装

:make install //安装

3 安装后的其他调整

  1. 建立配置文件

在mysql源码目录中的support-files文件下,提供了适合不同负责数据库的样本配置文件。如果不确定数据库系统的应用规模,一般选择my-medium.cnf文件即可。该文件能够满足大多数企业中、的中等应用需求。根据样例建立Mysql系统中的/etc/my.cnt配置文件

:cp support-files/my-medium.cnf /etc/my.cnf //建立配置文件

  1. 初始化数据库

为了能够正常使用Mysql数据库系统,应以运行用户mysql的身份执行初始化任务,以便建立用户授权库、表、以及test测试库等。初始化脚本mysql_install_db位于安装目录下的bin文件夹中,此外还应该调整位于存放数据库内容的文件夹归属,以便mysql用户有权限对其进行读写操作

:cd /usr/local/mysql/bin/

: ./mysql_install_db --user=mysql //初始化数据库

: chown -R root:mysql /usr/local/mysql/

: chown -R mysql /usr/local/mysql/var/

  1. 优化执行路径、程序库路径

为Mysql系统的各种执行程序添加符号链接,以方便其使用。另外建议为Mysql的库文件、头文件也添加符号链接,便于在安装其他用的到的这些文件的软件包时能自动搜索

:ln -s /usr/local/mysql/bin/* /usr/local/bin/ 链接很重要,否则登录时会出问题

:ln -s /usr/local/mysql/lib/mysql/* /usr/lib/

:ln -s /usr/local/mysql/include/mysql/* /usr/include/

4)添加为系统服务

以便通过chkconfig进行管理,将添加mysql为系统服务,这样以后可以使用service工具来控制Mysql数据库服务了

cd /usr/src/mysql-5.1.55/

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

chmod a+x /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

  1. 启动mysqld服务,并查看运行状态

:/etc/init.d/mysqld start 启动

:/etc/init.d/mysqld status 查看运行状态

::netstat -anpt | grep mysqld 查看TCP 3306端口号

4 访问Mysql数据库

Mysql数据库系统也是一个典型的C/S架构应用,需要访问Mysql数据库需要使用专门的客户端软件。在windows平台可以使用Mysql Manager、Mysql Front、Navicat Lite等软件;而在Linux系统中,最简单、最易用的Mysql客户端软件是其自带的mysql命令工具

  1. 登录到mysql服务器

mysql -u 用户名 [-p]

提示符:mysql>

管理员账号为root,密码为空

: mysql -u root //空密码登录

: mysqladmin -u root password "123456” //设置密码

: mysql -u root -p //使用密码登录

::mysql -h 192.168.1.100 -u root -p //使用-h来指定登录其他服务器

2) 退出MySQL操作环境

:exit 或

:quit

四 数据库的基本管理

1 Mysql操作语句

成功登陆后会进入到提示符为“mysql>”的数据库操作环境,用户可以输入各种操作语句进行管理,每一条操作语句以分号表示结束,输入时可不区分大小写

2 查看数据库服务的日志文件

SHOW MASTER LOG;

3 查看数据库结构

Mysql是一套数据库管理系统,在每一台Mysql服务器中,支持运行多个库,每个库相当于一个容器,其中存放着很多个表,表中的每一行都包含一条数据记录

  1. 查看数据库列表信息

默认有三个库,其中mysql库中包含了用户认证相关的表

SHOW DATABASES;

  1. 查看数据库中的数据表信息

在操作前,先使用“use 数据库名”语句切换到指定库,数据库的数据文件默认存放在/usr/local/mysql/var/目录下。每一个数据库对应一个子目录,用于存储数据表文件,每一个数据表对应三个文件,后缀名分别为“.frm”、“.MYD”、“MYI”

USE mysql;

SHOW TABLES;

  1. 显示数据表的结构

使用“DESCRIBE [数据库名.]表名”的语句对指定表进行查看

DESCRIBE USER; 或者

DESCRIBE mysql.user;

4 数据库的创建和删除

  1. 创建新的数据库

使用“CREATE DATABASE 数据库名”语句创建新库,刚创建的数据库是空的,不包含任何表,在/usr/local/mysql/var/目录下会在动生成一个与库名相同的空文件夹

create datebase newname;

  1. 创建新的数据表

CREATE TABLE 表名 (字段1名称 类型,字段2名称 类型......,PRIMARY KEY (主键名));

user newname

create table users (user_name char(16) not null, user_passwd char(48) default ‘’, primary key (user_name)); //在name库中创建名为users的用户验证表

3)删除指定的数据表

DROP TABLE [数据库名.]表名

drop table newname users;

4)删除指定的数据库

DROP DATABASE 数据库名

drop database newname;

5 管理表中的数据记录

  1. 插入数据记录

INSERT INTO 表名(字段1, 字段2, ……) VALUES (字段1的值, 字段2的值, ……)

如果这条记录完整的包含所有字段值,则可以省略指定字段的部分

use newname;

insert into users (user_name,user_passwd) values (‘zhangsan’,password (‘123456’));

Insert into users values (‘lisi’,password (‘123456’)); //“(”前面都有空格

  1. 查询数据记录

SELECT 字段名1,字段名2 …… FROM 表名 WHERE 条件表达式

表示所有字段时可以使用通配符“*”,若要列出所有数据记录,则可以省略where条件句子

SELECT user_name,user_passwd FROM newname.users where user_name= 'lisi';

select user_name,user_passwd from newname.users; //查看指定字段所有数据记录

select * from newname.users; //查看所有字段所有数据记录

  1. 修改数据记录

UPDATE 表名 SET 字段名1=值1[,字段名2=值2] WHERE 条件表达式

UPDATE newname.users SET user_passwd=PASSWORD('') WHERE user_name='lisi';

在Mysql数据库服务器中,用于访问数据库的各种用户信息都保存在mysql库的user表中,可以直接修改其中的数据记录来修改用户密码

update mysql.user set password=password ('456789') where user='root'; //修改root密码

flush privileges; //刷新用户授权信息

  1. 删除数据记录

DELETE FROM 表名 WHERE 条件表达式

delete from newname.users; //删除表中所有数据记录

delete from newname.users where user_name=’lisi’; //删除lisi的数据记录

在Mysql数据库服务器中,默认添加了从本机访问数据库的空用户,基于安全性考虑,应该删除这些空用户

select user,host,password from mysql.user where user=''; //查看空用户

delete from mysql.user where user=''; //删除空用户

五 维护Mysql数据库

1 数据库的用户授权

  1. 设置用户权限(用户不存在时,则新建用户)

GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY ‘密码’ ]

权限列表:用于列出授权使用的各种数据库操作,以逗号分隔。如select,insert,update等,使用all表示所有权限

库名.表名:指定授权操作的库和表的名称,其中可以使用通配符来表示所有库或指定库中的所有表。如newname.*

用户@来源地址:用于指定客户名称和允许访问的客户机地址,即谁能链接,能从哪里链接,来源地址可以是域名、IP、还可以使用%,表示某个区域或网段内的所有地址。如%.benet.com、192.168.1.%等

IDENTIFIED BY:若新建用户时,省略此项,则用户密码为空

执行以下命令创建对表有查询权限的名为mazi,密码为123456的用户,记录会保存到mysql库的user、db、host、tables_priv等相关表中,无需刷新

grant select on newname.* to 'mazi'@'localhost' identified by '123456';

  1. 查看权限

SHOW GRANTS FOR 用户名@域名或IP

Show grants for ‘mazi’@’192.168.1.100’;

  1. 撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@域名或IP

revoke all on newname.* from 'mazi'@'localhost'; //取消用户所有权限,可以登录mysql服务器

2 数据库的备份与恢复

  1. 备份数据库

方法1:可直接备份目录 /usr/local/mysql/var/

tar -jcf mysql.tar.bz2 /usr/local/mysql/var/

方法2:使用专用备份工具 mysqldump

mysqldump -u 用户名 -p [密码] [选项] [数据库名] [表名] > /备份路径/备份文件名

  1. 导出指定库的部分表(备份mysql库中的user表)

mysqldump -u root -p mysql user > mysql-user.sql

  1. 导出一个或多个完整的库(备份auth这个库)

mysqldump -u root -p --database auth > auth.sql

  1. 备份所有的库(--opts可以优化执行速度)

mysqldump -u root -p --opt --all-databases > all-data.sql

D)查看备份文件内容

通过mysqldumo工具导出的sql脚本是文本文件,其中‘/*……*/’或‘——’开头的是注释

grep -v "^--" all-data.aql | grep -v "^/" | grep -v "^$

  1. 恢复数据库

mysql -u root -p [数据库名] < /备份路径/备份文件名

mysql -u root -p test < mysql-user.sql //恢复表到现有库中

mysql -u root -p < all-data.sql //恢复数据库

相关推荐

Linux两种光驱自动挂载的方法

环境:CentOS6.4西昆云服务器方式一修改fstab文件/etc/fstab是系统保存文件系统信息?静态文件,每一行描述一个文件系统;系统每次启动会读取此文件信息以确定需要挂载哪些文件系统。参...

linux系统运维,挂载和分区概念太难?在虚机下操作一次全掌握

虚拟机的好处就是可以模拟和学习生产环境的一切操作,假如我们还不熟悉磁盘操作,那先在虚机环境下多操作几次。这次来练习下硬盘扩容操作。虚拟机环境:centos8vm11linux设备命名规则在linux中...

Linux 挂载 NFS 外部存储 (mount 和 /etc/fstab)

mount:手工挂载,下次重启需再重新挂载,操作命令:mount-tnfs-ooptionsserver:/remote/export/local/directory上面命令中,本地目录...

在Linux中如何设置自动挂载特定文件系统(示例)

Linux...

Linux环境中的绑定挂载(bind mount)

简介:Linux中的mount命令是一个特殊的指令,主要用于挂载文件目录。而绑定挂载(bindmount)命令更为特别。mount的bind选项将第一个目录克隆到第二个。一个目录中的改变将会在...

Linux挂载CIFS共享 临时挂载 1. 首先

如何解决服务器存储空间不足的问题?大家好,欢迎回来。在上一期视频中,我为大家介绍了如何利用Linux挂载来扩容服务器存储空间。这一期视频,我将以Linux为例,教大家如何进行扩容。群辉使用的是Linu...

Linux 硬盘挂载(服务器重启自动挂载)

1、先查看目前机器上有几块硬盘,及已挂载磁盘:fdisk-l能够查看到当前主机上已连接上的磁盘,以及已经分割的磁盘分区。(下面以/dev/vdb磁盘进行分区、挂载为例,挂载点设置为/data)df...

linux 挂载磁盘

在Linux中挂载硬盘的步骤如下:...

笨小猪教您Linux磁盘挂载

本教程针对Linux系统比较熟悉或者想学习Linux基础的用户朋友,本教程操作起来比较傻瓜式,跟着步骤就会操作,本文使用的工具是XShell同时多多注意空格(文中会有提示)。【问答】什么是磁盘挂载?答...

Linux 磁盘挂载和docker安装命令

本篇给大家介绍Linux磁盘挂载和docker安装的相关内容,Linux服务器的操作是一个手熟的过程,一些不常用的命令隔断时间就忘记了,熟话说好记性不如烂笔头,还需在平时的工作中多练习记录。...

Linux设置开机自动挂载分区

有时候,我们在安装完Linux系统之后,可能在使用过程中添加硬盘或者分区进行使用,这时候就需要手动把磁盘分区挂载到某个路径,但是开机之后就会消失,需要重新挂载,非常麻烦,那么我们应该如何设置开机自动挂...

在linux挂载一个新硬盘的完整步骤

以下是在Linux中挂载新原始磁盘的完整步骤,包括分区、创建文件系统以及使用UUID在/etc/fstab中启动时挂载磁盘:将新的原始磁盘连接到Linux系统并打开电源。运行以下命令,...

Linux系统如何挂载exFAT分区

简介:Linux系统中不能像Windows系统那样自动识别加载新设备,需要手动识别,手动加载。Linux中一切皆文件。文件通过一个很大的文件树来组织,文件树的根目录是:/,从根目开始录逐级展开。这些文...

Linux系统挂载硬盘

fdisk-l查看可挂载的磁盘都有哪些df-h查看已经挂载的磁盘...

WSL2发布,如何在Win10中挂载Linux文件系统

WSL2是最新版本的架构,它为Windows子系统提供支持,使其能够在Windows上运行ELF64Linux二进制文件。通过最近的更新,它允许使用Linux文件系统访问存储在硬盘中的文件。如果你...

取消回复欢迎 发表评论: