Linux中mysql的安装、远程访问、基础操作、文件导入

Linux中mysql的安装、远程访问、基础操作、文件导入

  • [cheet card](#cheet card)
  • [1. 安装](#1. 安装)
    • [1. 使用root账号安装mysql](#1. 使用root账号安装mysql)
  • [2. 启动mysql并创建root、管理员两个账号](#2. 启动mysql并创建root、管理员两个账号)
  • [3. 基础操作](#3. 基础操作)
    • [3.1 数据库的查看、创建、修改、删除](#3.1 数据库的查看、创建、修改、删除)
    • [3.2 mysql的数据类型](#3.2 mysql的数据类型)
    • [3.3 数据表的基本操作](#3.3 数据表的基本操作)
    • [3.4 数据表结构的修改](#3.4 数据表结构的修改)
    • [3.5 表中数据的增、删、改](#3.5 表中数据的增、删、改)
    • [3.6 表中字段值的约束](#3.6 表中字段值的约束)
  • [4. 远程访问设置](#4. 远程访问设置)
    • [4.1 阿里云、腾讯云开放安全组](#4.1 阿里云、腾讯云开放安全组)
    • [4.2 集群mysql防火墙打开](#4.2 集群mysql防火墙打开)
  • [5. windows访问](#5. windows访问)
    • [5.1 登录](#5.1 登录)
    • [5.2 创建临时数据库TEMP](#5.2 创建临时数据库TEMP)
    • [5.3 待导入文件前10行导入TEMP数据库](#5.3 待导入文件前10行导入TEMP数据库)
  • [6. 文件导入](#6. 文件导入)
    • [6.1 更改指定的导入文件存放目录](#6.1 更改指定的导入文件存放目录)
    • [6.2 更改mysql数据库datadir存放目录](#6.2 更改mysql数据库datadir存放目录)
    • [6.3 导入文件](#6.3 导入文件)
  • 参考文件

cheet card

安装启动操作
1.安装mysql命令 :$ sudo apt-get install -y mysql-server
2.查看mysql的版本命令(注意-V是大写,不然会出现如下错误):$ mysql -V
3.启动mysql命令(关闭,重启等只需将start换成stop,restart等即可):$sudo service mysql start
4.登录mysql命令为:$ mysql -u用户名 -p密码
5.连接远程数据库:$ mysql -h <host> -P <port> -u<username> -p<password>

数据库操作
1.查看数据库:> show databases; (注意分号";"不要落下)
2.新建一个数据库命令:> create database 数据库名称;
   删除一个数据库命令:> drop database 数据库名称;
3.使用某个数据库:> use 数据库名称;

表操作
1.查看表命令:> show tables;
2.建立一个新表:> create table 表名 (字段参数); 或 >create table if not exists 表名(字段参数);
   删除一个旧表:> drop table 表名; 或 >drop table if exists 表名;
3.查看表结构:> desc 表名称; 或 >show columns from 表名称;
4.对表数据的操作:
   增:>insert into 表名称 (字段名1,字段名2,字段名3......) values(字段名1的值,字段名2的值,字段名3的值......);
   删:>delete from 表名称 where 表达式;
   改:>update 表名称 set 字段名="新值" where 表达式;
   查:>select 字段名1,字段名2,字段名3..... from 表名称;
5.增加字段:>alter table 表名称 add 字段名 数据类型 其它; (其它包括默认初始值的设定等等)
6.删除字段:>alter table 表名称 drop 字段名;

用户相关操作
注:以下命令均需先以root身份登录mysql:mysql -uroot -p
1.添加新用户
(1)创建新用户:> insert into mysql.user(Host,User,Password) values("localhost","user1",password("password1"));
(2)为用户分配权限:
            设置用户可以在本地访问mysql:grant all privileges on *.* to username@localhost identified by "password" ;
            设置用户只能访问指定数据库:grant all privileges on 数据库名.* to username@localhost identified by "password" ;
(3)刷新系统权限表:>flush privileges;
2.查看MySql当前所有的用户:>SELECT DISTINCT User FROM mysql.user;
3.删除用户及其数据字典中包含的数据:>drop user 'xbb'@'localhost';

1. 安装

1. 使用root账号安装mysql

# 下载
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
# 检查mariaDB是否被覆盖
rpm -qa |grep mariadb
rpm -e --nodeps mariadb-libs

# 解压文件及安装
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm # libaio缺少,需要安装
		rpm -qa | grep libaio
		yum -y install libaio

2. 启动mysql并创建root、管理员两个账号

## 初始化
mysqld --initialize --console

## 启动mysql
systemctl start mysqld

# 查看root临时密码
cat /var/log/mysqld.log |grep localhost

在linux界面使用mysql -u root -p,输入root临时密码后进入mysql语句。

# 修改密码
alter user 'root'@'localhost' identified by 'Root_root1'

# 开放 root 账户远程登录
## 1.进入数据库
	use mysql

## 2.修改user表,root账户可在任意IP登录
	update user set host='%' where user='root';  
	update user set host='localhost' where user='root'; # 恢复仅本地连接	

## 3.创建新用户guanliyuan,可在任意IP登录
	create user 'guanliyuan'@'%' identified with mysql_native_password by '!guanliyuaN4';
	
## 4.给用户guanliyuan可访问所有数据库,并拥有与root一样的增删改查权力
	grant all privileges on *.* to 'guanliyuan'@'%' with grant option;

## 5.创建账户张三,仅对所有数据库有select权力,在任意IP可登录
	CREATE USER zhangsan IDENTIFIED BY '!zhangsaN2024';
	SHOW GRANTS FOR zhangsan;
	GRANT SELECT on *.* TO 'zhangsan'@'%' WITH GRANT OPTION;
	FLUSH PRIVILEGES;
	
    # 以下为完整示例
    创建一个使用密码作为认证方式的账号
    CREATE USER 'kalacloud-remote'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
    根据自己的需要,给你用于远程访问的账号赋予权限
    GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'kalacloud-remote'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

3. 基础操作

3.1 数据库的查看、创建、修改、删除

# 创建数据库
create database demo;

# 查看mysql的数据库
show databases;

# 查看数据库demo信息
show create database demo;

# 创建数据库时为其指定字符集,语法如下:
	# mysql常用编码方式有 utf8 utf16 gbk unicode iso latin ascii
create database 数据库名 character set 编码方式;

# 选择使用的数据库
use 数据库名;

# 查看当前正在使用的数据库;
select database();

alter database demo character set gbk
drop database hello

3.2 mysql的数据类型

二进制、时期时间、字符串、整数类型、小数类型;

详细可看参考文件MySQL的字段类型,该怎么选?

3.3 数据表的基本操作

# 创建表格
create table 表名(
		字段名 数据类型 [(长度)] [约束条件], 
		字段名 数据类型 [(长度)] [约束条件], 
		字段名 数据类型 [(长度)] [约束条件], 
		.....
);

create table student(
	-> id  int unsigned,
	-> name varchar(10),
	-> age tinyint unsigned,
	-> sex enum('男', '女'),
	-> birthday date,
	-> hobby set('唱歌', '表演', '编程')
	);

# 展示表格式化后结果,更好看
show create table student\G
# 查看表格字段信息
desc/describe student
# 删除表格;
drop table OmicsCNGene_melt;

# 修改数据表名
alter table 旧表名 rename to 新表名

# 修改字段名,注意:新字段的数据类型不能省略!
alter table 表名 change 旧字段名 新字段名 新字段的数据类型;

# 修改字段类型
alter table 表名 modify 字段名 新的数据类型

# 添加字段
alter table 表名 add 新字段名 新字段数据类型 [first|after 已经存在的字段名]

# 修改字段位置
alter table 表名 modify 字段名1 数据类型 [first|after 字段名2]

# 删除字段
alter table 表名 drop 字段名

3.4 数据表结构的修改

极少用,表一旦建立,最好不要再改变,否则现有程序会被严重影响,尤其是表中已有数据的时候

一定要在设立之初把表格一次性设置好。

比如,修改字段名、修改字段类型、添加字段、修改字段位置,具体可见3.3、3.5内容

3.5 表中数据的增、删、改

# 插入数据
insert into 表名 (字段名 字段名, 字段名) values (值, 值, 值, 值, 值)
insert into student values (1, 'zhangsan', 18, '男', '1990-10-08', '唱歌,编程')

insert into 表名 set 字段名=值(字段名=值, ...)
insert into student set id=3, name='lisi', age=19, sex='男'

# 修改记录
update 表名 set 字段名=值[字段名=值, ...] [where 条件表达式]
update student set age=23,sex='女' where name = 'zhangsan'

# 删除记录
delete from 表名 [where 条件表达式]
dalete from student where name = 'zhangsan'

3.6 表中字段值的约束

primary key 主键约束
not null 非空约束
unique  唯一约束
check(条件语句) 检查约束
foreign key(字段名) references 表名(字段名)
default <默认值>  默认值约束

4. 远程访问设置

4.1 阿里云、腾讯云开放安全组

4.2 集群mysql防火墙打开

# 查看防火墙
systemctl status firewalld
# 查看3306端口状态
firewall-cmd --zone=public --query-port=3306/tcp
# 如果是no,表示关闭,打开3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 防火墙重载
firewall-cmd --reload
# 再次查看3306状态(yes)
firewall-cmd --zone=public --query-port=3306/tcp

5. windows访问

5.1 登录

如何登录网上有很多教程,如果遇到报错,可针对性搜索。

某一类报错,可参考DBeaver连接时报错:Public Key Retrieval is not allowed Public Key Retrieval is not allowed

5.2 创建临时数据库TEMP

利用3.3介绍是知识,创建一个数据库TEMP,刷新后能在windows下看到。

5.3 待导入文件前10行导入TEMP数据库

(1)正常导入,从DDL部分获得正确的表格创建语句;

(2)报错,修改"列"中报错字段的数据类型,右下角保存改变。重新导入测试数据,从DDL部分获得正确的表格创建语句;

6. 文件导入

6.1 更改指定的导入文件存放目录

show variables like 'secure_file_priv';
 
secure-file-priv的值有3种情况:
secure_file_priv=null      -- 默认值为null,限制mysql,禁止导入导出文件
secure_file_priv=""        -- 表示不限制路径,允许mysql 导入导出文件
secure_file_priv="D:/path" -- 指定路径,表示只允许在该路径目录下导入导出文件(这里的路径值可以自己设置)

使用root账号在/etc/my.conf文件中修改后,重启数据库生效

6.2 更改mysql数据库datadir存放目录

使用show variables like '%datadir%';,查看目前的存放路径。

使用root账号在/etc/my.conf文件中修改后,把原路径下的Data文件夹整个复制到目标路径下。重启数据库生效。

6.3 导入文件

(1) sql语句切入到目标database下;

(2) 使用5.3中得到的create语句创建table target;

(3) 使用load data infile导入文件
load data infile '/user_mount/abs_path/Media.csv' into table Media character set utf8 fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\n' IGNORE 1 LINES;

参考文件

(1) CentOS / Linux 安装MySQL(超简单详细)

(2) MySQL数据库SQL语言入门,精讲精练

(3) MySQL基础知识 - 账号和权限管理

(4) MySQL的字段类型,该怎么选?

(5) 最全服务器安装MySQL和远程连接教程(含常见问题解决)

(6) DBeaver连接时报错:Public Key Retrieval is not allowed Public Key Retrieval is not allowed

(7) ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot exec

(8) MySQL数据存储路径如何修改

(9) Linux下mysql导入csv文件

(10) 菜鸟mysql四分钟导入千万级别的数据

相关推荐
周全全5 分钟前
MySQL报错解决:The user specified as a definer (‘root‘@‘%‘) does not exist
android·数据库·mysql
白云如幻9 分钟前
MySQL的分组函数
数据库·mysql
霍格沃兹测试开发学社测试人社区25 分钟前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
今天我又学废了42 分钟前
Scala学习记录,List
学习
王俊山IT1 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java2 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
秋意钟2 小时前
MySQL日期类型选择建议
数据库·mysql
南宫生2 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
ac-er88883 小时前
MySQL如何实现PHP输入安全
mysql·安全·php
武子康3 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘