基于 Linux 安装 MySQL 及基本操作

为了提供更丰富、更强大的 web 应用功能,往往还需要有后台数据库、网页编程等多种角色的支持。
在一般小中型企业中,最常用的数据库就是MySQL,MySQL 是一个真正多线程、多用户的 SQL 数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。
MySQL 源码编译包(mysql-5.6.tar.gz):
https://pan.baidu.com/s/1pgYHB8kyJ7U1zl2cm4XUcw
**提取码: y8py **
MySQL 5.X 系列版本的使用最为广泛,该版本稳定性、兼容性都不错
其官方站点为:http://www.mysql.com
准备工作:
为了避免发生端口冲突、程序冲突等现象,建议先查看 MySQL 的安装情况,确认没有使用以 RPM 安装的MySQL包
[root@mysql /]# rpm -qa | grep mysql
如果有的话,建议将其卸载:rpm -q mysql-server mysql
然后就是需要安装 ncurses 包,检测到已经安装三个,还缺一个,所以需要挂载系统光盘,进行安装

[root@mysql /]# rpm -qa | grep ncurses
ncurses-5.9-13.20130511.el7.x86_64
ncurses-libs-5.9-13.20130511.el7.x86_64
ncurses-base-5.9-13.20130511.el7.noarch
[root@mysql /] # mount /dev/sr0 /media/
[root@mysql Packages]# rpm -ivh ncurses-devel-5.9-13.20130511.el7.x86_64.rpm 
warning: ncurses-devel-5.9-13.20130511.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:ncurses-devel-5.9-13.20130511.el7################################# [100%]

MySQL 5.X 系列版本需要 cmake 编译安装,所以需要先安装 cmake 包:

[root@mysql media]# tar zxf cmake-2.8.6.tar.gz -C /usr/src/
[root@mysql media]# cd /usr/src/cmake-2.8.6/
[root@mysql cmake-2.8.6]# ./configure 
[root@mysql cmake-2.8.6]# gmake && gmake install           # 过程会很长

源码编译及安装:
创建运行用户:

[root@mysql /]# groupadd mysql
[root@mysql /]# useradd -M -s /sbin/nologin mysql -g mysql    # -M 不创建宿主目录   -s 指定shell环境   -g 指定加入组 

解包:
将下载的 mysql 源码包解压:

[root@mysql media]# tar zxf mysql-5.6.36.tar.gz -C /usr/src/
[root@mysql media]# cd /usr/src/mysql-5.6.36/

配置:
在内容丰富、结构庞大的企业网站中,可能会用到多种字符集的网页,相应地数据库系统也应该支持不同的字符集编码。在配置过程中,可以将默认使用的字符集设置为 utf-8,并添加字符集的支持。
注意注意注意:接下来输入的命令需要区分大小写,一个标点符号也不能错,错了就得重新来过,写完命令之后一定要耐心检查一下

[root@mysql 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

各选项含义:
--DCMAKE_INSTALL_PREFIX:指定将 MySQL 数据库程序安装到某目录下
--DSYSCONFDIR:指定初始化参数文件目录
--DDEFAULT_CHARSET:指定默认使用的字符集编码
--DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci 是适用于 utf-8 字符集的通用规则 
--DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码

[root@mysql mysql-5.6.36]# make && make install #编译并安装  过程会很漫长
安装后的其他调整:
对数据库的目录进行权限设置:
[root@mysql ~]# chown -R mysql:mysql /usr/local/mysql
建立配置文件:
在 Centos 7 系统下默认支持 MariaDB 数据库,因此系统默认的/etc/my.cnf 配置文件中是 MariaDB 的配置文件。而在源码包目录中的 support-files 文件夹中,提供了 MySQL 数据库默认的样本配置文件 my-default.cnf 文件,所以在启动之前需要将原有的 my.cnf 文件替换为 MySQL 提供的配置文件内容。

[root@mysql ~]# rm -rf /etc/my.cnf                       # 将原来 etc 文件夹下的 my.cnf 文件删除
[root@mysql ~]# cp /usr/src/mysql-5.6.36/support-files/my-default.cnf /etc/my.cnf

初始化数据库:
以运行用户 mysql 的身份执行初始化脚本 mysql_install_db,指定数据存放目录

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

设置环境变量(为了方便在任何目录下使用 mysql 命令,需要在 /etc/profile 设置环境变量):

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

添加为系统服务:

[root@mysql ~]# cp /usr/src/mysql-5.6.36/support-files/mysql.server
/usr/local/mysql/bin/mysqld.sh       # 将服务脚本复制到 MySQL安装目录中
[root@mysql ~]# chmod +x /usr/local/mysql/bin/mysqld.sh     # 添加执行权限

[root@mysql /]# vim /usr/lib/systemd/system/mysqld.service 

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql                                     # 指定程序运行的用户账号
Group=mysql                                  # 指定程序运行的组账号

Type=forking
PIDFile=/usr/local/mysql/data/mysql.com.pid          # 注意pid前要输主机名,输入之前先查看一下本机主机名
ExecStart=/usr/local/mysql/bin/mysqld.sh  start
ExecStop=/usr/local/mysql/bin/mysqld.sh  stop

[Install]
WantedBy=multi-user.target
[root@mysql /]# systemctl enable mysqld              # 设置开机自启
[root@mysql /]# systemctl status mysqld               # 检查服务启动状态
[root@mysql /]# systemctl start mysqld                  # 启动服务

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

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

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


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

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

启动服务后登陆数据库:
root 是MySQL的默认管理员

[root@mysql /]# mysql -u root              # 无密码的时候登陆
[root@mysql /]# mysqladmin -u root password 123456       # 第一次设置密码
[root@mysql /]# mysqladmin -u root -p password 654321      # 修改密码,先输入新密码
Enter password:                                        # 根据提示输入旧密码
[root@mysql /]# mysql -u root -p               # 使用密码登陆
Enter password:                                         # 根据提示输入密码
 [root@mysql /]# mysql -u root -p 
 ……       // 省略部分内容
mysql> status                    # 查看当前数据库的基本信息
mysql> exit                        # 退出 MySQL操作环境  ouit 也行
Bye

查看 MySQL 中有哪些库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.03 sec)

查看数据库中有哪些表:

mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql         |
+---------------------------+
| columns_priv              |
| db                               |
| time_zone_name        |
……      // 省略部分内容
| time_zone_transition   |
| time_zone_transition_type |
| user                      |
+---------------------------+
28 rows in set (0.00 sec)

查看表的结构:

mysql> describe user;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| name     | char(16) | YES  |     | NULL    |       |
| xingbie  | char(10) | YES  |     | NULL    |       |
| nianling | int(11)  | YES  |     | NULL    |       |
+----------+----------+------+-----+---------+-------+
3 rows in set (0.01 sec)

创建新的数据库:
mysql> create database users;
创建新的表:

mysql> use users;
mysql> create table user (name char(16),xingbie char(10),nianling int);

删除一个数据表:

mysql> drop table user;
Query OK, 0 rows affected (0.01 sec)

删除一个数据库:

mysql> drop database users;
Query OK, 0 rows affected (0.00 sec)

管理表中的数据记录:
插入数据记录:

insert   into  表名(字段一,字段二,...)   values(字段一的值,字段二的值,....)
mysql> insert into user (name,xingbie,nianling) values('zhangsan','nan','25');

查询数据记录:

mysql> select * from user;
+----------+---------+----------+
| name     | xingbie | nianling |
+----------+---------+----------+
| zhangsan | nan     |       25 |
+----------+---------+----------+
1 row in set (0.00 sec)

修改数据记录:

update    表名   set    字段名=‘修改的字段值’ where  条件表达式
mysql> update user set nianling='20' where name='zhangsan';

删除数据记录:

delete    from   表名    where   条件表达式;
mysql> delete from user where name='zhangsan';

数据库用户授权:
授予权限

grant    权限列表    on    库名.表名    to  用户@来源地址   identified    by   ‘密码’;
mysql> grant select on users.user to zhangsan@localhost identified by  '123456';

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


查看权限:

show    grants    for  用户名@来源地址;
show    grants    for  'zhangsan'@'localhost';

撤销权限:

revoke    权限列表    on   数据库名.表名    from   用户名@来源地址
revoke    all    on   test.user    from   'zhangsan'@'localhost';
Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。 Ncurses是一个能提供基于文本终端窗口功能的动态库. Ncurses可以: 只要您喜欢,您可以使用整个屏幕 创建和管理一个窗口 使用8种不同的彩色 为您的程序提供鼠标支持 使用键盘上的功能键 Ncurses可以在任何遵循ANSI/POSIX标准的UNIX系统上运行,除此之外,它还可以从系统数据库中检测终端的属性, 并且自动进行调整,提供一个不受终端约束的接口.因此,Ncurses可以在不同的系统平台和不同的终端上工作的非常好. mc工具集就是一个用ncurses写的很好的例子,而且在终端上系统核心配置的界面同样是用ncurses编写的. NCURSES库简介在使用电传终端作为计算机输出设备的那个年代,电传终端是和计算机分开放置的,并通过串行电缆连接。终端的配置通过发送一系列字节完成。所有的终端控制操作:改变光标在屏幕上的位置,清除屏幕某一区域的内容,屏幕滚动,切换显示模式,给文字添加下划线,改变字符的外观、颜色、亮度等等,也是通过这样一系列字节实现的。由于这些连续的控制字节以一个转义字符“0x1B”(即ESC键)作为起始字节,所以这种控制序列叫做转义序列。即使在当今,我们也可以向终端仿真程序发送转义序列,得到和当年电传打字终端相同的显示效果。 假设你想在终端(或终端仿真窗口)输出一段彩色的文字,可以将以下这段转义序列输入到你的字符控制台(或控制台窗口): echo "^[[0;31;40mIn Color" 在这里 “^[” 就是所谓的转义字符。(注意:“^[” 是一个字符,不是依次键入“^”和“[”字符。要输出“^[”,必须按下Ctrl-V再按下ESC键)执行以上的命令,就应该可以看见“In Color”变为红色了(译者注:试更改转义字符各分号间的参数,看看会有什么结果)。以后输出的文本信息都是这样的效果。 如果想返回原来的颜色设置可以使用以下的命令: echo "^[[0;37;40m" 现在体会到这些神奇字符(转移序列)的作用了吗?然而这些奇怪的字符是不是很难理解呢?并且有时相同的转义序列在不同的终端上会有不同的显示结果。因此,UNIX的设计者发明了一种叫做 termcap的机制。 termcap是一个列出特定终端的所有功能的文本文件,并且给出了实现对应功能的转义序列。然而在这种机制发明后的几年中,逐渐被terminfo机制取代。程序员使用terminfo时不用花过多的时间查阅termcap。只需让程序查询terminfo的数据库就可得到控制字符,并将其发送到终端或终端仿真程序。 1.1 NCURSES是什么? 你可能会疑惑,引入的这些技术术语是什么。假设在使用termcap或者terminfo的情况下,每个应用程序都在访问terminfo数据库并且做一些必要的处理(比如发送控制字符等等)。不久这些操作的复杂度将会变得难以控制。于是,curses诞生了。curses 的命名是来自一个叫做 “cursor optimization”(光标最优化)的双关语(译者注:curses本身有诅咒的意思)。curses构成了一个工作在底层终端代码之上的封装,并向用户提供了一个灵活高效的API(Application Programming Interface 应用程序接口)。它提供了移动光标,建立窗口,产生颜色,处理鼠标操作等功能。使程序员编写应用程序不需要关心那些底层的终端操作。 那么ncurses又是什么?ncurses是最早的System V Release 4.0 (SVr4)中 CURSES的一个克隆。这是一个可自由配置的库,完全兼容旧版本的curses。简而言之,它是一个管理应用程序在字符终端显示的函数库。当后面提到curses的时候,同时也可以和NCURSES互换。 关于ncurses详细的更新历史可以查阅ncurses源代码分发包中的NEWS文件。Thomas Dickey是目前的维护人员。你可以通过bug-ncurses@gnu.org联系维护人员 1.2 我们可以用NCURSES做什么? ncurses不仅仅封装了底层终端功能,而且提供了一个相当稳固的工作框架(Framework)可以在字符模式下产生美观的界面。它提供了一些创建窗口的函数。而它的姊妹库 Menu、Panel和Form则对curses基础库及进行了扩展。这些扩展库通常都随同curses一起发行。我们可以建立一个同时包含多个窗口(multiple windows)、菜单(menus)、面板(panels)和表单(for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值