安装MySQL

Linux安装

1
2
3
4
5
##安装前检查系统是否自带mysql数据库
rpm -qa | grep mysql
##删除系统安装
rpm -e mysql #普通删除模式
rpm -e --nodeps mysql #强制删除(删除时,提示有依赖文件可使用该命令

安装步骤

使用yum命令安装mysql,参考官网

1
2
3
4
5
6
7
8
9
10
11
##安装命令
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server

chown -R mysql:mysql /var/lib/mysql/ #权限设置
mysqld --initialize #初始化
##启动mysql检查状态
systemctl start mysqld
systemctl status mysqld

注意:

如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置。

此外,你也可以使用 MariaDB 代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

1
2
3
4
5
6
7
yum install mariadb-server mariadb 

mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动

验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysqladmin --version  #验证

##该命令将输出以下结果,该结果基于你的系统信息:
mysqladmin Ver 8.42 Distrib 5.6.51, for Linux on x86_64
###如果以上命令执行后未输出任何信息,说明你的mysql未安装成功

mysql #进入mysql
##执行简单命令(>提示符后面执行SQL命令)
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.13 sec)

创建密码

1
2
mysqladmin -u root password "000000"  #创建root用户密码,密码为"000000"
mysql -uroot -p000000 #进入数据库

注,:输入密码时密码不会显示,输入正确即可

管理MySQL

1
2
3
4
5
6
7
8
9
10
ps -ef | grep mysqld   #检查mysql服务器是否启动

##启动mysql服务器
cd /usr/bin
./mysqld_safe &

##关闭运行中的mysql服务器
cd /usr/bin
./mysqladmin -u root -p shutdown
Enter password:******

用户管理

如果你要添加MySQL用户,你只需要在mysql数据库中的user表添加新用户即可。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mysql -uroot -p000000  #进入mysql数据库

##输出格式(添加用户)
mysql> create user 'user01'@'mysql' identified by'user01';
Query OK, 0 rows affected (0.00 sec)

##输出格式(删除用户)
mysql> drop user 'user01'@'mysql'; #删除后需重新创建'user01'用户
Query OK, 0 rows affected (0.00 sec)

##查看mysql用户
mysql> select user,host from mysql.user; #查看所有用户
+--------+-----------+
| user | host |
+--------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | mysql |
| root | mysql |
| user01 | mysql |
+--------+-----------+
7 rows in set (0.00 sec)

mysql> select user(); #查看当前用户
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.01 sec)

管理MySQL常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
use <数据库名>  #选中需要的数据库,使用该命令后所有Mysql命令都只针对该数据库

SHOW DATABASES; #列出mysql中所有数据库
mysql> SHOW DATABASES; #实例
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

SHOW TABLES; #指定所有表,需要配合use命令指定数据库后使用

实例:
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
24 rows in set (0.00 sec)

SHOW COLUMNS FROM <数据表名> #查看数据表属性等信息
mysql> SHOW COLUMNS FROM db;
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
+-----------------------+---------------+------+-----+---------+-------+
22 rows in set (0.00 sec)

SHOW INDEX FROM <数据表名>; #显示数据表的详细索引信息
mysql> SHOW INDEX FROM db; #实例
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| db | 0 | PRIMARY | 1 | Host | A | NULL | NULL | NULL | | BTREE | | |
| db | 0 | PRIMARY | 2 | Db | A | NULL | NULL | NULL | | BTREE | | |
| db | 0 | PRIMARY | 3 | User | A | 2 | NULL | NULL | | BTREE | | |
| db | 1 | User | 1 | User | A | 1 | NULL | NULL | | BTREE | | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
4 rows in set (0.00 sec)

mysql> SHOW TABLE STATUS FROM 'xxx'; # 显示数据库 xxx 中所有表的信息

mysql> SHOW TABLE STATUS from RUNOOB LIKE 'xxx%'; # 表名以xxx开头的表的信息
mysql> SHOW TABLE STATUS from RUNOOB LIKE 'xxx%'\G; # 加上 \G,查询结果按列打印

HPH语法

MySQL可应用于多种用语言,如C,C++,JAVA,PHP等,其中,MySQL在PHP的web开发中应用的最广泛。(后续案例也基本采用PHP语言)

1
2
3
4
5
6
7
8
#MySQL PHP函数格式:
mysqli_function(value,value,...); #语法结束后面一定要有符号结束!!

#以上格式中 function部分描述了mysql函数的功能,如:
mysqli_connect($connect); #连接到数据库,其中connect包含了连接所需要的信息,例如主机名、用户名、数据库名和密码等。如果连接成功,该函数将返回一个连接对象,否则返回false。
mysqli_query($connect,"SQL 语句"); #执行SQL查询或者更新操作
mysqli_fetch_array() #从结果集对象中获取一行数据,并以数组的形式返回
mysqli_close() #关闭MySQL数据库连接,释放资源

实例

1
2
3
4
5
6
7
8
<?php
$retval = mysqli_function(value, [value,...]);
if( !$retval )
{
die ( "相关错误信息" );
}
# 其他 MySQL 或 PHP 语句
?>

MySQL连接方式

二进制连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql -uroot -p000000
#登陆成功后,显示结果如下:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>


MariaDB [(none)]> quit; #退出MySQL数据库
Bye

PHP脚本连接

PHP 提供了 mysqli_connect() 函数来连接数据库。

该函数有 6 个参数,在成功链接到 MySQL 后返回连接标识,失败返回 FALSE 。

语法

1
2
3
4
mysqli_connect(host, username, password, dbname,port, socket);

#可以使用 PHP 的 mysqli_close() 函数来断开与 MySQL 数据库的链接
bool mysqli_close ( mysqli $link )

提示:通常不需要使用 mysqli_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。

参数说明

参数 说明
host 规定主机名或IP地址(可选)
usernsme 规定MySQL用户名(可选)
passwod 规定MySQL密码(可选)
dbname 规定默认使用的数据库(可选)
port 规定尝试连接到MySQL服务器的端口号(可选)
socket 规定socket或要使用的已命名pipe(可选)

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
yum -y install php php-mysql   #安装PHP MySQL扩展
vi mysql01.php #创建PHP脚本

<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
?>

php mysql01.php #运行PHP脚本

创建数据库

MySQL创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql -uroot -p000000   #进入数据库

MariaDB [(none)]> create database runoob; #创建数据库,数据名runoob
Query OK, 1 row affected (0.00 sec)

mysqladmin -uroot -p000000 create RUNOOB #使用mysqladmin创建

#验证
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| RUNOOB |
| mysql |
| performance_schema |
| runoob |
| test |
+--------------------+
6 rows in set (0.00 sec)

PHP脚本创建数据库

一般使用mysqli_query函数来创建或者删除MySQL数据库,执行成功返回true否则返回false

语法

1
mysqli_query(connecttion,query,resultmode);
参数 描述
connecttion 规定要使用的MySQL连接(必需)
query 规定查询字符(必需)
resultmode 一个常量(可选) , 可以是下列值中的任意一个: —— MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个) —— MYSQLI_STORE_RESULT(默认)

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
vi runoob.php   #创建PHP脚本
<?php
$dbhost = 'localhost'; # mysql服务器主机地址
$dbuser = 'root'; # mysql用户名
$dbpass = '000000'; # mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接错误: ' . mysqli_error($conn));
}
echo '连接成功<br />';
$sql = 'CREATE DATABASE RUNOOB';
$retval = mysqli_query($conn,$sql );
if(! $retval )
{
die('创建数据库失败: ' . mysqli_error($conn));
}
echo "数据库 RUNOOB 创建成功\n";
mysqli_close($conn);
?>

php runoob.php #执行脚本

__END__