mysql --- linux 安装及使用

一、MySQL 安装

所有平台的 MySQL 下载地址为: https://dev.mysql.com/downloads/mysql/。 挑选你需要的 MySQL Community Server 版本及对应的平台。
注意:安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足导致无法安装。

Linux/UNIX 上安装 MySQL

Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址:
MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。
MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。
MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
MySQL-bench - MySQL数据库服务器的基准和性能测试工具。

删除原mysql

安装前,我们可以检测系统是否自带安装 MySQL:

rpm -qa | grep mysql

如果你系统有安装,那可以选择进行卸载:

rpm -e mysql  // 普通删除模式

rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

yum安装 MySQL

接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,
下载地址为:https://dev.mysql.com/downloads/repo/yum/

# 下载资源包
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 mysql:mysql -R /var/lib/mysql

初始化 MySQL:

mysqld --initialize

启动 MySQL:

systemctl start mysqld

查看 MySQL 运行状态:

systemctl status mysqld

注意:如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置。
此外,你也可以使用 MariaDB 代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
yum install mariadb-server mariadb
mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动

验证是否安装成功

在成功安装 MySQL 后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证 MySQL 是否工作正常。
使用 mysqladmin 工具来获取服务器状态:
使用 mysqladmin 命令俩检查服务器的版本, 在 linux 上该二进制文件位于 /usr/bin 目录,在 Windows 上该二进制文件位于C:\mysql\bin 。

[root@host]# mysqladmin --version

linux上该命令将输出以下结果,该结果基于你的系统信息:

mysqladmin  Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386

如果以上命令执行后未输入任何信息,说明你的Mysql未安装成功。

设置密码-使用 MySQL Client

你可以在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到 MySQL 服务器上,默认情况下 MySQL 服务器的登录密码为空,所以本实例不需要输入密码。
命令如下:

[root@host]# mysql

以上命令执行后会输出 mysql>提示符,这说明你已经成功连接到Mysql服务器上,你可以在 mysql> 提示符执行SQL命令:

mysql> SHOW DATABASES;
+----------+| Database |+----------
+| mysql    || test     |+----------
+2 rows in set (0.13 sec)

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

[root@host]# use mysql;

[root@host]# mysqladmin -u root password "new_password";

现在你可以通过以下命令来连接到Mysql服务器:

[root@host]# mysql -u root -p
Enter password:*******

注意:在输入密码时,密码是不会显示了,你正确输入即可。

Windows 上安装 MySQL

下载安装
Windows 上安装 MySQL 相对来说会较为简单,地那就链接 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 下载 zip 包。
最新版本可以在 MySQL 下载 中下载中查看。

点击 Download 按钮进入下载页面,点击下图中的 No thanks, just start my download. 就可立即下载:

下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\web\mysql-8.0.11 下。
接下来我们需要配置下 MySQL 的配置文件
打开刚刚解压的文件夹 C:\web\mysql-8.0.11 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:

[mysql]# 设置mysql客户端默认字符集default-character-set=utf8
 [mysqld]# 设置3306端口
port = 3306# 设置mysql的安装目录
basedir=C:\\web\\mysql-8.0.11# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错# datadir=C:\\web\\sqldata# 允许最大连接数
max_connections=20# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB

接下来我们来启动下 MySQL 数据库:
以管理员身份打开 cmd 命令行工具,切换目录:

cd C:\web\mysql-8.0.11\bin

初始化数据库:

mysqld --initialize --console

执行完成后,会输出 root 用户的初始默认密码,如:

`...2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A` temporary password is generated for root@localhost: APWCY5ws&hjQ...

APWCY5ws&hjQ 就是初始密码,后续登录需要用到,你也可以在登陆后修改密码。
输入以下安装命令:

mysqld install

启动输入以下命令即可:

net start mysql

注意: 在 5.7 需要初始化 data 目录:

cd C:\web\mysql-8.0.11\bin 
mysqld --initialize-insecure 

初始化后再运行 net start mysql 即可启动 mysql。

登录 MySQL
当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:

mysql -h 主机名 -u 用户名 -p

参数说明:
-h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
-u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:

mysql -u root -p

按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:

Enter password:

若密码存在, 输入密码登录, 不存在则直接按回车登录。登录成功后你将会看到 Welecome to the MySQL monitor… 的提示语。
然后命令提示符会一直以 mysq> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。

Navicat 连接配置

Mysql的启动关闭命令

//启动mysql

service mysql start

//停止 mysql

service mysql stop

service mysql restart

开启mysql的远程访问权限

登陆mysql

mysql -u root -p

授权远程登录权限
修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.77.123,这表示只允许局域网的192.168.77.123这个ip远程访问mysql。

//进入mysql 表

mysql> use mysql;

//无密码使用

mysql> update user set host = '%' where user = 'root';

//有密码使用, YOUR_PASSWORD 替换成密码

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YOUR_PASSWORD' WITH GRANT OPTION;

//查看权限

mysql> select host user from user;  

//刷新权限

mysql> flush privileges;

防火墙开放3306端口

关闭防火墙的方法为:

  1. 永久性生效

开启:chkconfig iptables on
关闭:chkconfig iptables off


修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。

  1. 即时生效,重启后失效
    开启:service iptables start
    关闭:service iptables stop

    setenforce 0

防火墙找不到iptables文件处理

关闭防火墙找不到iptables文件,解决方法如下:
因为默认使用的是firewall作为防火墙,把他停掉装个iptable
命令:

systemctl stop firewalld 
    
systemctl mask firewalld
    
yum install -y iptables 
    
yum install iptables-services

然后就有iptables文件,就可以作配置

二、MySQL的启动,用户,表信息

启动及关闭MySQL服务器

检查MySQL的服务器是否启动:

ps -ef | grep mysqld

//启动

service mysql start

//停止 mysql

service mysql stop

//重启

service mysql restart

MySQL用户设置

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

//登陆数据库

mysql -u root -p

//进入mysql表

use mysql;> use mysql;

//创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

说明:
username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

例子:

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

//授权:

GRANT privileges ON databasename.tablename TO 'username'@'host'

说明:
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
例子:

GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';

注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

//直接创建用户并授权

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.*  TO 'zara'@'localhost' IDENTIFIED BY 'zara123';

/etc/my.cnf 文件配置

一般情况下,你不需要修改该配置文件,该文件默认配置如下:

[mysqld]mysqld]
datadir=/var/lib/mysql=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock=/var/lib/mysql/mysql.sock
[mysql.server][mysql.server]
user=mysql=mysql
basedir=/var/lib=/var/lib
[safe_mysqld][safe_mysqld]
err-log=/var/log/mysqld.log-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid-file=/var/run/mysqld/mysqld.pid

在配置文件中,你可以指定不同的错误日志文件存放的目录,一般你不需要改动这些配置。

表信息命令

以下列出了使用Mysql数据库过程中常用的命令:

打开某个数据库 USE 数据库名 :

mysql> use mysql;

Database changedDatabase changed

列出所有 MySQL 数据库

mysql> SHOW DATABASES;

列出当前数据库的所有表 SHOW TABLES

mysql>  use mysql;    //进入某一个数据库
mysql>  SHOW TABLES;

显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。SHOW COLUMNS FROM 数据表:

mysql> SHOW COLUMNS FROM user;

显示数据表的详细索引信息,包括PRIMARY KEY(主键)。SHOW INDEX FROM 数据表:

mysql> SHOW INDEX FROM user;

mysql> SHOW TABLE STATUS  FROM mysql;   # 显示数据库 mysql 中所有表的信息
mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%';     # 表名以runoob开头的表的信息
mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'\G;   # 加上 \G,查询结果按列打

三、MySQL 创建删除数据库

创建数据库

drop命令删除数据库

创建数据库,语法如下:

CREATE DATABASE 数据库名;

以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:

[root@host]# mysql -u root -p   

Enter password:****** # 登录后进入终端
//创建数据库

mysql> create DATABASE RUNOOB;

使用 mysqladmin 创建数据库

[root@host]# mysqladmin -u root -p create RUNOOBEnter password:******

以上命令执行成功后会创建 MySQL 数据库 RUNOOB。

删除数据库

drop database <数据库名>;

例如删除名为RUNOOB的数据库:

mysql> drop database RUNOOB;

使用mysqladmin删除数据库
你也可以使用mysql mysqladmin命令在终端来执行删除命令。
以下实例删除数据库RUNOOB(该数据库在前一章节已创建):

[root @ host] #mysqladmin -u root -p drop RUNOOB
输入密码:******

四、MySQL 数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
类型 大小 范围(有符号) 范围(无符号) 用途

小整数值

TINYINT	1 字节	(-128,127)	(0,255)	

整数值

SMALLINT	2 字节	(-32 768,32 767)	(0,65 535)	

大整数值

MEDIUMINT	3 字节	(-8 388 608,8 388 607)	(0,16 777 215)	

大整数值

INT或INTEGER	4 字节	(-2 147 483 648,2 147 483 647)	(0,4 294 967 295)	

极大整数值

BIGINT	8 字节	(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)	(0,18 446 744 073 709 551 615)	

单精度浮点数值

FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38)

双精度浮点数值

DOUBLE	8 字节	(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)	0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型	大小
       (字节)	     范围	                格式	    用途
DATE  	  3	    1000-01-01/9999-12-31	  YYYY-MM-DD	日期值
TIME	  3	    '-838:59:59'/'838:59:59'  HH:MM:SS	    时间值或持续时间
YEAR	  1	    1901/2155	YYYY	      年份值
DATETIME  8	    1000-01-01 00:00:00/9999-12-31 23:59:59	YYYY-MM-DD HH:MM:SS	混合日期和时间值
TIMESTAMP 4	    1970-01-01 00:00:00/2038  结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07	YYYYMMDD HHMMSS	混合日期和时间值,时间戳

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型	     大小        	用途
CHAR	  0-255字节	       定长字符串
VARCHAR	  0-65535字节	   变长字符串
TINYBLOB  0-255字节	       不超过 255 个字符的二进制字符串
TINYTEXT  0-255字节	       短文本字符串
BLOB	  0-65 535字节	   二进制形式的长文本数据
TEXT	  0-65 535字节	   长文本数据
MEDIUMBLOB	0-16 777 215字节	  二进制形式的中等长度文本数据
MEDIUMTEXT	0-16 777 215字节	  中等长度文本数据
LONGBLOB	0-4 294 967 295字节	  二进制形式的极大文本数据
LONGTEXT	0-4 294 967 295字节	  极大文本数据

CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

五、表创建与删除

//登陆mysql

root@host# mysql -u root -p

Enter password:*******
//进入数据库,没RUNOOB数据库的自己创建

mysql> use RUNOOB;

Database changed

//表创建
通过 mysql> 命令窗口可以很简单的创建MySQL数据表。你可以使用 SQL 语句 CREATE TABLE 来创建数据表。
以下为创建数据表 runoob_tbl 实例:

//创建表

mysql> CREATE TABLE runoob_tbl(
   runoob_id INT NOT NULL AUTO_INCREMENT,
   runoob_title VARCHAR(100) NOT NULL,
   runoob_author VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( runoob_id )
   )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)

注意:MySQL命令终止符为分号 ; 。

实例解析:
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。

//表删除

DROP TABLE 表名
如:

DROP TABLE runoob_tbl;

六、数据增删改查

//登陆mysql

root@host# mysql -u root -p
Enter password:*******

//进入数据库,没RUNOOB数据库的自己创建

mysql> use RUNOOB;

Database changed
没表没数据库的自己看上面

数据添加

mysql> INSERT INTO runoob_tbl
    (runoob_title, runoob_author, submission_date)
    VALUES
("学习 MySQL", "菜鸟教程", NOW());
Query OK, 1 rows affected, 1 warnings (0.01 sec)

数据查询

select * from runoob_tbl;

数据修改

update runoob_tbl rt 
set rt.runoob_title="xuxi Mysql" 
where runoob_id = 1;

数据删除

Delete from runoob_tbl where runoob_id = 1;

你可能感兴趣的:(#,Linux)