网站建设属于什么科目,棋牌网站怎么做优化,敬请期待素材,互联网项目网Linux 系统中 MySQL 的安装与使用记录
介绍
基本信息
在 Linux 系统中#xff0c;MySQL 是一种常用的关系型数据库管理系统。
MySQL 默认安装位置#xff1a;/var/lib/mysql
检查默认安装位置#xff1a;
which mysql该命令将显示 MySQL 二进制可执行文件的路径。在大…Linux 系统中 MySQL 的安装与使用记录
介绍
基本信息
在 Linux 系统中MySQL 是一种常用的关系型数据库管理系统。
MySQL 默认安装位置/var/lib/mysql
检查默认安装位置
which mysql该命令将显示 MySQL 二进制可执行文件的路径。在大多数情况下它将显示 /usr/bin/mysql这意味着 MySQL 被正确安装并且可以在命令行中使用。
mysql_config --variablepkglibdir该命令将显示 MySQL 的库文件目录通常是 /usr/lib/mysql
数据库安装完成后自带了以下四个数据库具体作用如下
mysql - 存储 MySQL 服务器正常运行所需要的各种信息时区、主从、用户、权限等information_schema - 提供了访问数据库元数据的各种表和视图包含数据库、表、字段类型及访问权限等performance_schema - 为 MySQL 服务器运行时状态提供了一个底层监控功能主要用于收集数据库服务器性能参数sys - 包含了一系列方便 DBA 和开发人员你用 performance_schema 性能数据库进行性能调优和诊断的视图
常用工具
mysql
这里的 mysql 不是指 mysqld 服务而是指 mysql 的客户端工具
基本用法
语法 mysql [options] [database]
选项 -u, --username # 指定用户名-p, --password[name] # 指定密码-h, --hostname # 指定服务器 IP 或域名不写则默认本地 ip-P, --portport # 指定连接端口不写则默认端口 3306-e, --executename # 执行 SQL 语句并退出-e 选项可以在 MySQL 客户端执行 SQL 语句而不用连接到 MySQL 数据库再执行对于一些批处理脚本这种方式尤其方便。
例如
mysql -uroot -p1234 itcast -e select * from stumysqldump
mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表及插入表的 SQL 语句。
基本用法
语法 mysqldump [options] db_name [tables]mysqldump [options] --database/-B db1 [db2 db3...]mysqldump [options] --all-databases/-A连接选项 -u, --username # 指定用户名-p, --password[name] # 指定密码-h, --hostname # 指定服务器ip或域名-P, --port # 指定连接端口输出选项--add-drop-database # 在每个数据库创建语句前加上 drop database 语句--add-drop-table # 在每个表创建语句前加上 drop table 语句 , 默认开启; 不开启 (--skip-add-drop-table)-n, --no-create-db # 不包含数据库的创建语句-t, --no-create-info # 不包含数据表的创建语句-d, --no-data # 不包含数据-T, --tabname # 自动生成两个文件一个.sql文件创建表结构的语句一个.txt文件数据文件mysqladmin
mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。
基本用法
语法:mysqladmin [options] command ...
选项:-u, --username # 指定用户名-p, --password[name] # 指定密码-h, --hostname # 指定服务器 IP 或域名-P, --portport # 指定连接端口示例
# 删除指定的数据库
mysqladmin -uroot –p1234 drop test01# 查看数据库版本信息
mysqladmin -uroot –p1234 versionmysqlbinlog
由于服务器生成的二进制日志文件以二进制格式保存所以如果想要检查这些文本的文本格式就会使用到 mysqlbinlog 日志管理工具。
mysqlshow
mysqlshow 客户端对象查找工具用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引。
快速使用
前提准备
查看系统版本
cat /etc/redhat-release检测是否安装过 mysql
rpm -qa | grep mysql检测是否安装过 mariadb若存在请卸载该软件与 MySQL 数据库有冲突需要手动卸载
rpm -qa | grep mariadb卸载
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64开始安装
访问 MySQL 官网找到 MySQL Community Server 并选择对应版本压缩包文件进行下载上传服务器。也可以使用 wget 命令行下载
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tarMySQL 版本与 Linux 系统相对应如centos7 - el7 、centos8 - el8 解压缩文件
mkdir /usr/local/mysqltar -xvf /usr/local/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar -C /usr/local/mysqlcd /usr/local/mysql使用 rpm 命令行安装
rpm -ivh mysql-community-common-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-client-plugins-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-libs-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-client-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-icu-data-files-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-devel-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-server-8.0.31-1.el8.x86_64.rpm必须按照顺序执行命令否则会出现依赖错误的报错 检测是否安装成功
mysql -V
# or
mysql --version常用命令
查看服务状态
systemctl status mysqld开启服务
systemctl start mysqld停止服务暂时关闭
systemctl stop mysqld重启服务
systemctl restart mysqld设置开机自启
systemctl enable mysqld禁止服务永久关闭
systemctl disable mysqld操作指南
获取初始化密码
第一次运行 MySQL 服务时会进行初始化加载同时会生成一个 root 用户的初始密码可以通过查看日志文件 /var/log/mysqld.log 获取到 root 用户的初始密码后续可手动修改密码
cat /var/log/mysqld.log | grep password连接数据库
基本用法
用法mysql [OPTIONS] [database]参数-h, - 连接地址-u, - 用户名若存在-p, - 密码若存在-P, - 端口默认3306使用实例
连接默认数据库
mysql -u root -p密码默认为空与 MySQL 版本有关若无法连接可尝试查看初始密码进行连接 连接本地数据库
mysql -h localhost -uroot -p123456连接指定数据库
mysql -h localhost -uroot -p123456 [database]修改用户密码
修改初始化密码
alter user rootlocalhost identified by 123456;修改校验密码策略可选一般不需要修改
# 设置密码长度的最低位数
set global validate_password.length4;# 设置密码的安全等级修改密码安全策略为低只校验密码长度至少8位
set global validate_password.policyLOW;使用 mysqladmin 工具修改密码
mysqladmin -uroot -p原密码 password 新密码;使用 sql 语句更改密码
SET PASSWORD FOR rootlocalhost PASSWORD(新密码);忘记 root 用户密码使用 UPDATE 直接编辑 user 表
# 进入my.cnf文件
vim /etc/my.cnf # 添加语句跳过授权表
skip-grant-tables# 重新启动 mysql
systemctl restart mysql# 登入 mysql此时不需要密码验证
mysql -uroot -p# 设置新密码
update mysql.user set authentication_stringpassword(新密码)where Userroot and Hostlocalhost;# 刷新授权
flush privileges;远程连接
开放端口3306
firewall-cmd --zonepublic --add-port3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --zonepublic --list-port开放远程访问权限
连接数据库并切换到 mysql 数据库
mysql -u root -puse mysql;查看用户访问权限
select host, user, plugin from user;localhost - 只可以本地访问 % - 允许任意地方访问 设置用户任意地方可以访问
update user set host% where userroot;刷新权限
flush privileges;备份与还原
导入数据还原
进入 mysql
mysql -uroot -p创建新的数据库
create database test;
show databases;使用目标数据库
use test;
show tables;运行指定路径的 SQL 文件
source /root/test.sql;检验是否导入成功
show tables; # 查看所有表
desc test_tb; # 查看某张表结构
select * from test_tb; # 查询某张表导出数据备份
mysqldump 是在操作系统命令行下运行的不是在 MySQL 命令行下运行的。
一般形式mysqldump -h [IP] -u [用户名] -p [数据库名] [导出的文件名] 若找不到 mysqldump 命令可尝试在安装目录 mysql/bin 下运行 导出所有表以及数据不加 -d
mysqldump -h localhost -u root -p test ~/test.sql导出所有表结构加 -d
mysqldump -h localhost -u root -p -d test ~/test.sql添加 --add-drop-table 参数在每个 create 语句前增加一个 drop table
mysqldump -h localhost -u root -p -d --add-drop-table test ~/test.sql导出某张表的表结构不含数据
mysqldump -h localhost -u root -p -d test test_tb ~/test.sql导出某张表的表结构和数据不加 -d
mysqldump -h localhost -u root -p test test_tb ~/test.sql备份多个数据库
mysqldump -h localhost -u root -p --databases test1 test2 ~/test.sql备份所有的数据库
mysqldump -h localhost -u root -p --all -databases ~/test.sql导出为指定格式的数据的外部任意文件类型
一般形式mysqldump -u root -p -T [目标目录] [dbname] [tablename] [option]
其中 option 与下文参数一样只需要简单转换下如FIELDS TERMINATED BY 字符串 更改为 --fields-terminated-by字符
示例
mysqldump -u root -p -T G:\arcgisworkspace\zypdoc\ abc pollution --fields-terminated-by, 不要任何多余的空格也不用转移字符 -p 后面也不用写密码 注意目标目录是文件夹文件名是表名后缀是 .txt 文件 导出文本文件
一般形式select [列名称] from tablename [where] into outfile 目标文件路径 [option]
参数说明
其中 option 参数常用的 5 个选项
FIELDS TERMINATED BY 字符串设置字符串为字段的分割符默认值为 \tFIELDS ENCLOSED BY 字符设置字符串括上 char varchar text 等字符型字段默认值为 无任何符号FIELDS OPTIONALLY ENCLOSED BY 字符设置字符串括上字段的值默认值为 无任何符号LINES STARTING BY 字符串设置每一行开头的字符默认值为 无任何字符FIELDS ESCAPED BY 字符设置转义字符默认值为 \LINES TERMINATED BY 字符串设置每行结束符默认值为 \n
示例
select * from pollution into outfile G:\\arcgisworkspace\\zypdoc\\text2.csv
FIELDS TERMINATED BY \, OPTIONALLY ENCLOSED BY \
LINES STARTING BY \ TERMINATED BY \r\n;导入文本文件
创建对应字段的数据表
create table csv_test2(
id int(8) primary key,
name varchar(64),
value int(32)
); 导入外部数据
LOAD DATA INFILE D:\\tjdata_metro\\test\\mysql_infile3.csv
INTO TABLE csv_test2
FIELDS TERMINATED BY \,
OPTIONALLY ENCLOSED BY \
LINES TERMINATED by\r\n
ignore 1 lines
(id,name,value); 上面的 lines terminated by \r\n 是要求换行符号,为 windows 的换行
上面的 ignore 1 lines 是忽略第一行的标题行。
FAQ
安装 MySQL 失败可能存在的问题
libc.so.6 缺失
大概率是因为下载的 MySQL 版本与 Linux 版本对应不上可以检查一下 MySQL 压缩包后缀名里面的参数是否与系统版本匹配
openssl 缺失
安装 openssl-devel
yum install openssl-devel -yperl 和 libaio 缺失
安装 perl
# 查看与 perl 相关的软件
yum list perl# 选择安装
yum install -y perl.x86_64安装 libaio
# 查看与 libaio 相关的软件
yum list libaio# 选择安装
yum install -y libaio*远程连接 MySQL 提示密码校验方式不被允许
如果提示 caching_sha2_password 加密方式不被允许需要将其修改为 mysql_native_password
alter user root% identified with mysql_native_password by 123456;
flush privileges;centos7 下登入 MySQL 出现 ERROR 1045 (28000): Access denied for user ‘root’‘localhost’ (using password: YES)
编辑配置文件 my.cnf
vim /etc/my.cnf在文件末尾添加 skip-grant-tables
# ...
skip-grant-tables
# ...重启 MySQL 服务
service mysqld restart重新连接 MySQL 不带密码直接回车
mysql -uroot -p参考文献
Mysql命令行导入sql数据