本文主要介绍 MySQL 的相关知识,及其安装方法和常见用法。
1. 简介
MySQL 是一个关系型数据库管理系统(关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性),由瑞典MySQL AB公司开发,目前属于 Oracle 旗下产品。
MySQL 所使用的 SQL 语言是用于访问数据库的、最常用的标准化语言。
2. 安装方法
本文介绍 MySQL 在 CentOS 7 上的安装方法。
利用 MySQL 的 Yum 仓库,我们可以使用 Yum 命令简便地安装/更新 MySQL 。在这里介绍使用 Yum 方式安装 MySQL 的方法。
2.1 下载MySQL仓库
下载、添加 MySQL 的 Yum 仓库,命令如下:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
此时,在系统的 Yum 仓库目录下,查看 MySQL 的仓库文件是否已经添加了,如下:
根据查询结果,能够看到 MySQL 的 Yum 仓库已经添加了。
2.2 安装MySQL
使用 Yum 命令安装 MySQL ,如下:
yum install mysql-server -y
2.3 启动MySQL
systemctl start mysqld
默认情况下,MySQL 将会绑定到 localhost (127.0.0.1) 。
2.4 测试MySQL
MySQL 的标准客户端工具会随着 mysql-server 包一起安装,这个 MySQL 客户端需要通过终端连接 MySQL 服务器。如下:
[root@node1 /opt/liitdar/mydemos]# mysql
运行上述命令后,观察 mysql 客户端是否成功连接到了 mysql 服务器,如下:
上述结果说明 MySQL 安装成功了。
3. 常见用法
3.1 远程连接数据库
默认情况下, MySQL 会绑定到 localhost (127.0.0.1) ,即只允许本机连接 MySQL 。
本文将介绍几种允许远程连接数据库的方法。
3.1.1 修改user表
MySQL 数据库中默认会有一个名为“mysql”的数据库,在该数据库中,有一个名为“user”的数据表,该表会控制mysql服务器的外部连接权限(信息),如下:
mysql> select host,user,password from user; +-----------+------+----------+ | host | user | password | +-----------+------+----------+ | node1 | root | | | 127.0.0.1 | root | | | ::1 | root | | | localhost | | | | node1 | | | +-----------+------+----------+ 5 rows in set (0.00 sec) mysql>
在 user 表中,存在“host”、“user”和“password”字段,这些字段即控制着能够连接到mysql服务器的“主机名”、“用户名”和“密码”。所以,为了能让所有的外部主机访问到这个mysql数据库,需要进行以下操作:
1. 我们更新“user”表的 host 字段的值,如下:
mysql> update user set host = '%' where user = 'root' and host = '127.0.0.1'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql>
说明:我们将host为“127.0.0.1”的记录改为了host = '%'。host 字段的值为“%”、user 字段的值为“root”表示在任何客户端机器上都能以 root 用户身份登录到mysql服务器上。建议在软件开发过程中将 host 的值设为“%”。
2. 执行完上述操作后,查询一下更新后的 user 表,如下:
mysql> select host,user,password from user; +-----------+------+----------+ | host | user | password | +-----------+------+----------+ | node1 | root | | | % | root | | | ::1 | root | | | localhost | | | | node1 | | | +-----------+------+----------+ 5 rows in set (0.00 sec) mysql>
在上述查询结果能够看到,更新的内容已经写入到 user 表中了。
3. 此时,我们需要把此设置(更新mysql服务器的访问权限)推送到内存中(或重启mysql服务器),这样外部客户端才能访问mysql服务器。
推送设置到内容中的命令如下:
mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql>
4. 完成上述操作后,我们就可以通过外部客户端(如192.168.213.129)访问mysql数据库(192.168.213.128)了,如下:
[root@node2 ~]# mysql -h 192.168.213.128 -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.6.40 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
3.2 数据库常见操作
3.2.1 创建数据库
创建一个名称为“testdb”的数据库,命令如下:
mysql> mysql> create database testdb; Query OK, 1 row affected (0.01 sec)的
查询数据库信息,观察数据库“testdb”是否创建成功了,如下:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | testdb | +--------------------+ 4 rows in set (0.01 sec) mysql>
上述查询结果说明:数据库“testdb”已经创建成功了。
3.2.2 创建表
在上面创建的数据库“testdb”中,创建一个名为“customers”的表,命令如下:
mysql> mysql> use testdb; Database changed mysql> mysql> create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT); Query OK, 0 rows affected (0.03 sec) mysql>
查询数据库“testdb”的表信息,观察表“customers”是否创建成功了,如下:
mysql> show tables; +------------------+ | Tables_in_testdb | +------------------+ | customers | +------------------+ 1 row in set (0.00 sec) mysql>
上述查询结果说明:表“customers”已经创建成功了。
3.2.3 插入数据操作
在前面创建的数据库“testdb”中的表“customers”中,进行插入数据操作,如下:
mysql> insert into customers values(1, "liitdar", "me"); Query OK, 1 row affected (0.01 sec) mysql>
3.2.4 查询数据操作
查询表“customers”的信息,如下:
mysql> select * from customers; +-------------+------------+-----------+ | customer_id | first_name | last_name | +-------------+------------+-----------+ | 1 | liitdar | me | +-------------+------------+-----------+ 1 row in set (0.00 sec) mysql>
从上述查询结果能够看到,3.1.3节中插入的数据已经在表“customers”中了。
3.2.5 修改(更新)数据操作
更新表“customers”中 first_name 的值为 “liitdar” 的记录,将该记录的 last_name 的值修改为“itsme”,如下:
mysql> update customers set last_name = 'itsme' where first_name = 'liitdar'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql>
查询表“customers”,观察修改操作是否成功:
mysql> select * from customers; +-------------+------------+-----------+ | customer_id | first_name | last_name | +-------------+------------+-----------+ | 1 | liitdar | itsme | +-------------+------------+-----------+ 1 row in set (0.01 sec) mysql>
上述查询结果显示,修改操作已经成功。
3.2.6 删除数据操作
删除表“customers”中 first_name 的值为 “liitdar”,如下:
mysql> delete from customers where first_name = 'liitdar'; Query OK, 1 row affected (0.00 sec) mysql>
查询表“customers”,观察删除操作是否成功:
mysql> select * from customers; Empty set (0.01 sec) mysql>
上述查询结果显示,删除操作已经成功。