MySQL资料

资源
https://www.cnblogs.com/you-men/p/13804789.html  --常见的Mysql十款高可用方案
文件
SQL语言分类:
DDL  --数据库查询语言(create)
DML  --数据库操纵语言(insert、update、delete)
DQL  --数据库查询语言(select)
DCL  --数据库控制语言(grant、rollback、commit)

服务
systemctl start mysqld --启动mysql数据
systemctl stop mysqld --停止mysql数据


文件
show variables like 'datadir'; --查询数据文件默认目录
select * from performance_schema.file_instances; --查询数据文件、日志文件的路径


连接
update mysql.user set host='%' where user='root'; --设置'root'用户可以远程连接
flush privileges; --刷新
mysql -h 1.15.45.218 -p3306 -uroot -p0 --通过用户'root'@'%'连接远程数据
mysql -h 1.15.45.218 -p3306 -uuser -p0 --通过用户'user'@'%'连接远程数据
select * from performance_schema.hosts; --查询连接的ip

插件

存储引擎
show engines; --查询系统支持的存储引擎
show variables like '%storage_engine%'; --查询MySQL当前默认使用的存储引擎
show create table mysql.user; --查询表创建时使用的什么存储引擎
show table status from db_name where name='tb_name'; --查询表创建时使用的什么存储引擎
--MyISAM:*.opt,*.frm,*.myd,*.myi
--InnoDB:*.opt,*.frm,*.ibd

MyISAM
--创建db_name数据库后会在datadir指定的目录下创建目录/var/lib/mysql/db_name和文件db.opt
/var/lib/mysql/db_name
/var/lib/mysql/db_name/db.opt
--创建表tb_name后会在目录/var/lib/mysql/db_name下创建
/var/lib/mysql/db_name/tb_name.frm
/var/lib/mysql/db_name/tb_name.MYD
/var/lib/mysql/db_name/tb_name.MYI
InnoDB
--innodb默认会在datadir目录下创建文件
/var/lib/mysql/ibdata1
/var/lib/mysql/ib_logfile0
/var/lib/mysql/ib_logfile1





表空间(innoDB)
show variables like 'innodb_data_file_path'; --查询共享表空间的路径
show variables like 'innodb_file_per_table'; --查询独立表空间的路径



用户
查询
select * from mysql.user; --查询用户的信息
select user(); -- 返回当前登录的用户

创建
create user user@'%' identified by '0'; -- 创建user用户并设置密码为“0
insert into mysql.user (host,user,authentication_string,select_priv,insert_priv,update_priv,ssl_cipher,x509_issuer,x509_subject) values('localhost','guest',MD5('0'),'Y','Y','Y','0x','0x','0x'); --创建用户'guest'@'localhost',弃用

删除
drop user 'host@'user'; --删除用户'host@'user'
密码策略
show variables like 'validate_password%'; -- 查询密码安全策略的值
set global validate_password_policy=0; --设置密码强度检查等级,其中对应关系为:0/LOW、1/MEDIUM、2/STRONG
set global validate_password_mixed_case_count=0; --设置最小字母数
set global validate_password_special_char_count=0; --设置最小特殊字符数
set global validate_password_number_count=0; --设置最小数字数
set global validate_password_length=1; --设置密码最小长度
修改密码
alter user user() identified by '0'; --设置当前登录用户的密码,user()函数:返回当前用户
alter user user identified by '0'; --设置用户user的密码为0,修改密码后直接生效,不用"flush privileges;"
set password for 'user'@'%'=password('0'); --设置用户user的密码为0,修改密码后直接生效,不用"flush privileges;"
update mysql.user set authentication_string=password('user') where user='user' and host='%'; --设置用户user的密码为0
flush privileges; --当前user和privilige表中的用户信息/权限设置从mysql库中提取到内存里。
mysqladmin -uroot -p0 password 0 --在shell中执行,修改user用户的密码修改为0
mysqladmin -u user password -p --不想明文方式修改密码

# 第一次设置密码
systemctl start mysqld
cat /var/log/mysqld.log | grep password --查看初始密码
mysqladmin -u用户名 password '新密码' --第一次设置密码
mysqladmin -u用户名 -p旧密码 password 新密码 --第二次设置密码
# mariadb丢失mysql密码如何解决?
systemctl stop mariadb
mysqld_safe --skip-grant-tables& --重新启动;
mysql -uroot mysql
编辑use表;
# 丢失mysql密码如何解决?如何不输入密码直接进mysql数据库?
#需要重启数据库,线上环境慎用!!
#此时所有用户登录当前数据库都是免密码的,所以此时数据库的安全性是非常低的。
vi /etc/my.cnf
[mysqld]
skip-grant-tables
:wq
systemctl restart mariadb
mysql -uroot
密码修改好了之后再将配置文件中 skip-grant-tables去掉,再次重启数据库。
权限
查询
show grants for user; --查询'user'@'%'用户的权限
show grants for 'user'@'%'; --查询'user'@'%'用户的权限
show grants for 'user'@'localhost'; --查询'user'@'locahost'用户的权限
授予
grant all privileges on mysql.* to user; --授予'user'@'%'用户对mysql数据库中所有表的所有权限
grant all privileges on mysql.* to 'user'@'%'; --授予'user'@'%'用户对mysql数据库中所有表的所有权限
grant all privileges on mysql.* to 'user'@'localhost'; --授予'user'@'localhost'用户对mysql数据库中所有表的所有权限
grant all privileges on mysql.* to user identified by '0'; --创建并授予user用户对mysql数据库中所有表的所有权限
grant all privileges on mysql.* to user identified by '0' with grant opetion; --创建并授予user用户对mysql数据库中所有表的所有权限,并允许user用户把此权限赋予其他用户

撤销
revoke all on mysql.* from 'user'@'%'; --撤销'user'@'%'对mysql.*的所有权限

刷新
flush privileges;

数据库
创建
create database data; --创建数据库data
create database [if not exists] data; --创建数据库data
create database data character set utf8 collate utf8_bin; --创建数据库data,并设置字符集
CREATE DATABASE `db` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';  --创建数据库db,并设置字符集

查询
select version(); --查询版本
show databases; --查询数据库
use db; --选择数据库'db'
use information_schema; --进入数据库
select schema_name from information_schema.schemata; --查询数据库


删除
drop database data; --删除数据库
drop database [if exists] data; --删除数据库


表
数字
tinyint		十分小的数据	1个字节
smallint		较小的数据		2个字节
mediumint	中等的数据		3个字节
int			标准的数据		4个字节
bigint		较大的数据		8个字节
float		浮点数			4个字节
double		浮点数			8个字节
decimal		字符串形式的浮点数 金融计算的时候,一般使用decimal

字符串
char		字符串固定大小	0~255
varchar		可变字符串			0~65535	常用的变量	String
tinytext		微型文本			2^8-1
text			文本串				2^16-1

时间日期
date	YYYY-MM-DD,日期格式
time	HH:mm:ss,时间格式
datetime 	YYYY-MM-DD HH:mm:ss	最常用的时间格式
timestrap	时间戳,1970.1.1到现在的毫秒数
year		年份表示

null
没有值,未知
==注意,不要使用null进行运算,结果为NULl




创建
主表:
create table if not exists `student` (
		`id` int(4) not null auto_increment comment '学号',
		`name` varchar(30) not null default '匿名' comment '姓名',
		`pwd` varchar(20) not null default '123456' comment '密码',
		`sex` varchar(2) not null default '隐私' comment '姓名',
		`birthday` datetime default null comment '出生日期',
		`address` varchar(100) default null comment '家庭地址', 
		`email` varchar(50) default null comment '邮箱',
		primary key (`id`)
)engine=innodb default charset=utf8 collate=utf8_general_ci;

子表:
create table if not exists `telephone` (
		`telephone` int(20) not null comment '联系方式',
		`id` int(4) not null comment '学号',
		primary key (`telephone`),
		foreign key (`id`) references student(`id`)
)engine=innodb default charset=utf8 collate=utf8_general_ci;


--表名,create table `student`创建表名为tb的表,并创建一个字段id,表名尽量用反引号括起来
--条件,if not exists如果表不存在则创建,如果存在不创建且不会报错
--字段,int(4)  --数字的宽度为4,如果插入字符串是1,查询显示为0001,varchar(10),字符串的宽度为10,显示宽度与存储大小或类型包含的值的范围无关,字段名称尽量用反引号括起来
--自增,auto_increment ,定义列为自增的属性,一般用于主键,数值会自动加1;
create table if not exists `student` (
		`id` int(4) auto_increment,
		`name` varchar(10),
		primary key (`id`)
)
/*
自动增长的列必须是主键
*/
--主键,primary key (`id`),关键字用于定义列为主键
--默认值,default '匿名',Navicat给字段设置为默认值,字符串类型需要加单引号,否则报错。
--引擎,engine=innodb
--字符集,default charset=utf8;
--排序规则,COLLATE = utf8_general_ci;

语法:
create table [if not exists] `表明`(
	‘字段名’ 列类型 [属性|约束] [索引] [注释],
	‘字段名’ 列类型 [属性|约束] [索引] [注释],
	......
	‘字段名’ 列类型 [属性|约束] [索引] [注释]
	[primary key (`字段名`)]
)[引擎|表类型][字符集][排序规则][注释]

字段类型:[tinyint|smallint|int|mediumint|bigint|float|double|decimal|char|varchar]
约束:[not null|default ‘string’|unique|primary key(`字段名`)|foreign key(`字段名`) references 主表名(`字段名`)]
注释:[comment ‘注释’]


修改
alter table db.tb rename to db.tb0; --修改表名
alter table data.tb add age int not null,add address varchar(100) not null; --增加多个字段,非空
alter table data.tb add age int not null comment '年龄'; --增加字段及备注
alter table data.tb add age int not null after name; --在字段'name'后增加字段'age'
alter table data.tb add age int not null first; --把字段添加到首列
alter table data.tb change age age_bak int not null; --修改单个字段名或属性,覆盖原来的属性
alter table data.tb change name name varchar(50),change age age int(20); --修改多个字段名或属性
alter table db.tb engine=innodb; --修改表使用的存储引擎


查询
show tables;  --查询当前数据库下的表
show table status from mysql; --查询数据库'mysql'下的所有表信息
show table status from mysql like 'user'; --查询数据表'mysql.user'的详细信息
select * from performance_schema.table_io_waits_summary_by_table; --查询表
select table_name,table_comment from information_schema.tables where table_name in('tables_priv','help_keyword'); --查询表注释
show columns from mysql.user; --查询表字段结构信息
describe mysql.user; --查询表字段结构信息


删除
drop table data.tb; --删除数据表'data.tb'
alter table data.tb drop address; --删除单个字段
alter table data.tb drop name,drop city; --删除多个字段



数据
插入
insert into 表名(字段,字段,字段)values('值','值','值'); --插入一条记录
insert into 表名(字段,字段,字段)values('值','值','值'),('值','值','值'); --插入多条记录
insert into data.tb(id,name,age)values('001','小王','30'); --插入一条记录
insert into data.tb(id,name,age)values('002','小刘','20'),('003','小明','19'); --插入多条记录
insert into data.tb set id='1',name='小王'; --插入一条记录





修改
update 表名 set 字段='值' where 字段='值'; --修改多条记录;
update 表名 set 字段='值',字段='值' where 字段='值'; --修改多条记录;
update data.tb set age='20' where name='小王'; --修改单条记录单个字段的值;
update data.tb set name='小王',age='20' where
id='1'; --修改单条记录多个字段的值;
update data.tb set age='20' where id<4; --查询字段id<4的记录,把字段age的值修改为20

删除
delete from 表名 where 字段='值'; --删除一条记录;
delete from 表名 where 字段 in('值','值'); --删除多条记录
delete from data.tb where name='小王'; --删除单条记录
delete from data.tb where name in('小王','小张'); --删除多条记录
查询
条件查询
select * from data.tb;
select * from data.tb where age=30; --条件查询
select * from data.tb where age=30 and sex='1'; --与and查询
select * from data.tb where age=30 or sex='1'; --或or查询
select * from data.tb where age in(30,40); --列表in查询
select * from data.tb where age not in(30,40); --列表not in查询
模糊查询
select * from data.tb where name like '%王'; --模糊查询
多表查询
集合查询
子查询
空值查询
select * from data.tb t where t.age is null; --空值查询,查询字段是null的记录
select * from data.tb t where t.age is not null; --空值查询,查询字段不是null的记录
范围查询
select * from data.tb where age between 20 and 30; --范围查询
分组查询

连接

排序
select * from data.tb order by age; --单字段排序查询,默认排序规则为升序
select * from data.tb order by age,name; --多字段排序查询,默认排序规则为升序
select * from data.tb order by age desc,name asc; --多字段排序查询,先按age降序排序,再按name升序
去重
select distinct name from data.tb; --过滤查询
select count(distinct age) from data.tb; --过滤查询,distinct关键字来返回不重复字段的条数
别名
select * from data.tb t where t.age=30; --别名
拼接
分页查询
select * from data.tb limit 2; --限制查询,只显示两条记录
select * from data.tb limit 2,4; --限制查询,指定记录的开始和结束位置
select * from data.tb limit 2 offset 2; --限制查询,返回从第3条记录开始的后面的2条记录


符号
单行注释
show databases;--查询数据库

多行注释
show databases
/*
hello
*/
;
反引号
use `user`;  --tab键的上面,如果你的表名或字段名是一个特殊字符,就需要带``
select `user` from student;  --字段外加`user`,取消字段名的高亮显示


索引

锁
select * from performance_schema.table_lock_waits_summary_by_table; --查询锁





日志
#erro log
show variables like 'log_error'; --错误日志文件路径
#redo log
show variables like 'innodb_log_group_home_dir'; --重做日志文件路径
show variables like 'innodb_log%'

#undo log
show variables like 'innodb_undo_directory'; --回滚日志文件路径
show variables like 'innodb_undo%'

#slow log
show variables like '%slow%'; --慢日志文件路径
#bin log
show variables like 'log_bin_basename' --二进制日志的文件路径
show variables like 'log_bin_%'

#genral log
show variables like 'general_log_file'; --一般查询日志的文件路径






https://www.cnblogs.com/chenmh/p/5014077.html




备份
逻辑备份
mysqlbackup
--企业级备份工具

mysqldump

outfile
select * into outfile 'file_name' fromm tbl_name;
load data
mysqlimport
--通过启用二进制日志进行增量备份
--使用副本进行备份
--使用文件系统快照进行备份
物理备份
复制表文件




恢复

高可用
Replication
## 主从复制的原理

1.master主机log,I/O线程,复制到本地,放到sql里,


MySQL主从复制延迟问题的原因和解决的办法?

#原因
数据库(主从)延迟发生的场景:数据量写入量过大

#解决办法
1)升级服务器硬件
2)MySQL优化(Linux系统–>MySQL)

mysql优化:
最大连接数

重启服务器的流程
发现问题(必须重启)–重启文档(理由,方案)





## 配置文档

https://www.cnblogs.com/lay2017/p/9043985.html

Master节点
[root@5c9ffabe04f2 /]# vi /etc/my.cnf
log-bin=master-bin
server-id=1
:wq
[root@5c9ffabe04f2 /]# mysql -uroot -p0
MariaDB [(none)]> grant replication slave on . to ‘root’@‘172.17.0.7’ identified by ‘0’
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> show master status;
±------------------±---------±-------------±-----------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
±------------------±---------±-------------±-----------------+
| master-bin.000001 | 245 | | |
±------------------±---------±-------------±-----------------+
[root@5c9ffabe04f2 /]# systemctl restart mariadb

Slave节点
[root@1b93610cd846 /]# vi /etc/my.cnf
log-bin=master-bin
server-id=1
:wq
[root@1b93610cd846 /]# systemctl restart mariadb
[root@1b93610cd846 /]# mysql -uroot -p0
MariaDB [(none)]> change master to master_host=‘172.17.0.8’,master_user=‘root’, master_password=‘0’,master_log_file=‘master-bin.000001’,master_log_pos=245;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;

Group Replication
Fabric
MHA
MMM
Innodb Cluster
Ndb Cluster

安装
Yum方式安装MySQL5.7
yum install -y wget
wget  https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
cd /etc/yum.repos.d/
cat mysql-community.repo   ## "enabled=1"启用指定版本库;"enabled=0"关闭指定版本库,修改两处.

Enable to use MySQL 5.7

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/ b a s e a r c h / e n a b l e d = 1 g p g c h e c k = 1 g p g k e y = f i l e : / / / e t c / p k i / r p m − g p g / R P M − G P G − K E Y − m y s q l [ m y s q l 80 − c o m m u n i t y ] n a m e = M y S Q L 8.0 C o m m u n i t y S e r v e r b a s e u r l = h t t p : / / r e p o . m y s q l . c o m / y u m / m y s q l − 8.0 − c o m m u n i t y / e l / 7 / basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/ basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpmgpg/RPMGPGKEYmysql[mysql80community]name=MySQL8.0CommunityServerbaseurl=http://repo.mysql.com/yum/mysql8.0community/el/7/basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
yum install -y mysql-server mysql
systemctl start mysqld
cat /var/log/mysqld.log  | grep password
mysqladmin -u root -p’,8x>%r+qLfh6’  password ‘YiYi@123’
mysql -u root -pYiYi@123

CentOS系统中编译安装MySQL5.7
CMake 安装MySQL5.7

参考文档:https://blog.csdn.net/l835311324/article/details/85009776
前言:
• MySQL5.5之前可以用make,在MySQL5.5之后源码编译需要用CMake。
• 使用虚拟机安装MySQL,尽量把CPU和内存调高,编译的时候比较吃配置。
• 一般二进制的方式就可以了,如果需要定制可以用CMAKE。
安装依赖包
yum install -y cmake openssl openssl-devel ncurses ncurses-devel gcc gcc-devel gcc-c++
yum groupinstall "Development Tools" -y
创建MySQL用户
useradd -M -s /sbin/nologin mysql
下载解压
tar xf mysql-boost-5.7.24.tar.gz
cd mysql-5.7.24/
CMake构建MySQL5.7
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0 \
-DWITH_BOOST=./boost/boost_1_59_0 \
-DWITH_SSL=system
make && make install
初始化数据库(生成临时密码)
/usr/local/mysql5.7/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql5.7 --datadir=/usr/local/mysql5.7/data
设置路径及权限
chown -R mysql.mysql /usr/local/mysql5.7
echo 'PATH=/usr/local/mysql5.7/bin/:$PATH' >>/etc/profile
source /etc/profile
创建配置文件/etc/my.cnf
cat <EOF> /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql5.7
datadir=/usr/local/mysql5.7/data
socket=/usr/local/mysql5.7/data/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/usr/local/mysql5.7/data/err.log
pid-file=/usr/local/mysql5.7/data/mysql.pid
!includedir /etc/my.cnf.d
EOF
启动数据库
touch /usr/local/mysql5.7/data/err.log
chown -R mysql.mysql /usr/local/mysql5.7
mysqld_safe &
ss -antlp
连接数据库
mysql -uroot -p -S /usr/local/mysql5.7/data/mysql.sock
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user 'root'@'localhost' identified by 'YiYi@123';
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
设置低安全级别密码
vi /etc/my.cnf
[mysqld]
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
:wq
mysqld_safe &
mysql> show plugins
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.14 sec)
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
mysql> alter user 'root'@'localhost' identified by '1234';
Query OK, 0 rows affected (0.04 sec)
建议
1.根据需求编译一个mysql的二进制文件目录,压缩成xz复用。
2.传输到其它机器上,执行初始化脚本。打包在一起


CentOS系统中编译安装MySQL8
#### 参考文档

https://www.cnblogs.com/NanZhiHan/p/11004800.html
https://www.cnblogs.com/java-wgm/p/6264767.html

#### 安装gcc5.3.1和cmake3等依赖包

yum安装gcc 5.3.1
yum install centos-release-scl-rh
yum install devtoolset-4-gcc devtoolset-4-gcc-c++
source /opt/rh/devtoolset-4/enable
which gcc
vi /etc/profile.d/gcc.sh
export PATH=/opt/rh/devtoolset-4/root/usr/bin:$PATH
source /etc/profile.d/gcc.sh
yum install cmake3 openssl-devel ncurses-devel openssl

#### 编译并安装mysql-boost-8.0.18.tar.gz

tar xvf mysql-boost-8.0.18.tar.gz
cd mysql-8.0.18/
mkdir build
cd build/
cmake3 … -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_BOOST=/root/mysql-8.0.18/boost/boost_1_70_0 ## 指定boost所在目录
make
make install

#### 配置环境变量
vi /etc/profile
export PATH=$PATH:/usr/local/mysql/bin/
#### 创建数据库用户

useradd -s /sbin/nologin mysql

#### 创建数据存放目录并修改权限

mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql

#### 修改配置文件(根据自己的情况来配置)

[mysqld]
port=3306
server-id=1
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
[client]
socket=/usr/local/mysql/mysql.sock

#### 初始化数据库并安装ssl

/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data
/usr/local/mysql/bin/mysql_ssl_rsa_setup

#### 复制启动脚本、启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start

#### 修改mysql密码(忘记密码)

vim /etc/my.cnf
[mysqld]
skip-grant-tables
/etc/init.d/mysqld restart

#### 修改密码为空
mysql
mysql >use mysql;
mysql >update user set authentication_string="" where user='root';
mysql >flush privileges;
mysql >exit;
#### 在配置文件中删除skip-grant-tables并重启mysql

/etc/init.d/mysqld restart

#### 登录mysql,修改密码

mysql -uroot -ppassword
mysql>alter user ‘root’@‘locahost’ identified by 'admin123‘;
mysql>flush provoleges;
mysql>exit;


APT方式安装MySQL8.0
参考文档:https://blog.csdn.net/wm609972715/article/details/83759266
wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb
dpkg -i mysql-apt-config_0.8.14-1_all.deb //安装出错,需要下面的依赖包
apt-get install lsb-release
apt-get install gnupg
dpkg -i mysql-apt-config_0.8.14-1_all.deb #进入视图,选择需要的版本作为指定软件源,OK
sudo apt update
apt install mysql-server

连接远程数据库:
$ mysql -u 用户名 -p -h IP地址 //需要配置用户允许远程连接


Windos10安装MySql5.7
一、下载
https://dev.mysql.com/downloads/mysql/5.7.html
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.36-winx64.zip

二、安装
1.把下载后的安装包解压到指定目录

2.添加环境变量
系统属性-环境变量--系统变量--Path--新建-- D:\yiyid\java\mysql-5.7.36\bin


3.在mysql-5.7.36安装路径下新建my.ini文件
编辑my.ini文件,注意替换文件路径
[mysqld]
basedir=D:\yiyid\java\mysql-5.7.36\
datadir=D:\yiyid\java\mysql-5.7.36\data
port=3306
skip-grant-tables

4.管理员模式打开cmd
5.进入mysql的bin目录
D:\yiyid\java\mysql-5.7.36\bin>cd /d D:\yiyid\java\mysql-5.7.36\bin
6.安装mysql服务
D:\yiyid\java\mysql-5.7.36\bin>mysql -intall


7.初始化数据文件
D:\yiyid\java\mysql-5.7.36\bin>mysqld --initialize-insecure -user=mysql

8.启动服务,进入mysql命令行(密码可以为空,提示输入密码,直接回车即可)
D:\yiyid\java\mysql-5.7.36\bin>net start mysql
D:\yiyid\java\mysql-5.7.36\bin>mysql -uroot -p


9.修改密码,刷新权限。
mysql> update mysql.user set authentication_string=password('123456') where user='root' and Host='localhost';
mysql> flush privileges;
mysql> exit



10. 注释my.ini文件中的#skip-grant-tables,停止、启动mysql服务
D:\yiyid\java\mysql-5.7.36\bin>net stop mysql
D:\yiyid\java\mysql-5.7.36\bin>net start mysql
D:\yiyid\java\mysql-5.7.36\bin>mysql -uroot -p123456



Windos10安装SQLyog(激活)
SQLyog12.08下载地址:
链接:https://pan.baidu.com/s/1iU6NtsthYwgx02zo10Trrw
提取码:cfz0
名称:ttrar
证书密钥:8d8120df-a5c3-4989-8f47-5afc79c56e7c

1.连接






Windos10安装Navicat(激活)
1. Navicat Premium 15 已安装
2.注册机已放到指定路径
3.进入注册机文件存放路径
cd /d D:\yiyid\mysql\Navicat Premium  15激活\navicat-keygen-for-x64  --管理员身份运行cmd
navicat-patcher.exe "D:\PATH\Navicat Premium 15"  --Syntax:命令 Navicat安装路径
navicat-keygen.exe -text .\RegPrivateKey.pem

D:\yiyid\mysql\Navicat Premium  15激活\navicat-keygen-for-x64>navicat-keygen.exe -text .\RegPrivateKey.pem
***************************************************
*       Navicat Keygen by @DoubleLabyrinth        *
*                   Version: 4.0                  *
***************************************************

[*] Select Navicat product:
 0. DataModeler
 1. Premium
 2. MySQL
 3. PostgreSQL
 4. Oracle
 5. SQLServer
 6. SQLite
 7. MariaDB
 8. MongoDB
 9. ReportViewer

(Input index)>
(Input index)> 1

[*] Select product language:
 0. English
 1. Simplified Chinese
 2. Traditional Chinese
 3. Japanese
 4. Polish
 5. Spanish
 6. French
 7. German
 8. Korean
 9. Russian
 10. Portuguese

(Input index)> 1

[*] Input major version number:
(range: 0 ~ 15, default: 12)> 15

[*] Serial number:
NAVP-S2YA-V6PO-2TOH

[*] Your name: wlh
[*] Your organization: China
[*] Input request code in Base64: (Input empty line to end)  --从Navicat拿到序列号粘贴到下面后回车
fPtMxxbwk6Pr1I2nYbo5xEdKiWgy9nvi9j39TtoVBvKt7Os1hAiK00V2ci/ojuyuBPYMUNhcLGe/q77E8k9fkV8el9S9whiYwCdUZfE1EKhQuNpfJqL5suD4g2nOLeAvA+be6y9Ix5/QZYh0PqvX7JKislilrcZEIRR9ti0JwFNP/vCsb5BFrFslOS6d06xh+PtmHxIFOZTWm4LpWB2Txy0RiikLlBAGTAoR7FTdcs9vUtTu5erKLcjCrptwP1odgfkUKncd+1a3Vrlpvk0EHS3ui2DSLxtx45WhfViQ6tOjrEhjAh+uHKSZfsinWj/IC4RoVidJ3m2pKx3Nr/kmFA==

[*] Request Info:
{"K":"NAVPS2YAV6PO2TOH", "DI":"6A7829D9258BDCB3DB8A", "P":"WIN"}

[*] Response Info:
{"K":"NAVPS2YAV6PO2TOH","DI":"6A7829D9258BDCB3DB8A","N":"wlh","O":"China","T":1636783793}

[*] Activation Code:  --注册机生成激活码,复制激活码到Navicat激活
paFnW528Vxr+mQsnW2ZztdYEvB6TbDTNOe8WMIh1xtIB92sOUZa5K4a7Vx8SaMICiWySx+Rv49wnfhVUZo4PDrfBdF1HTL85vMaiA2WqImaNAUdQYEzw0ZkocFs6L9frVwQf5fr89T40mvyMSIfYJ+Itw4mcV6NSnf72Wcujh56Zb+5rOoXb6EHVps7dGNUZq8gItPKiwpJAOqnFRJMqRQbmZ7cOAaVdLCs/kMmdFOQ7JfG5ojh/3cqVv+YM1tcMX26EB5GZcy2Du918jLp98AaSnBhEX5Krg8+c3luyvB7la3BxKU8tQvZRqAXgWBjP77yjRWtGKrSjron3IKAeRg==


问题汇总
密码策略
MySQL5.7密码策略
1.修改密码提示不符合密码策略
[root@vm ~]# mysqladmin -u root -p'op&W:5gkYb.Q' password 'qwer1234.+'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
mysqladmin: unable to change password; error: 'Your password does not satisfy the current policy requirements'
set global validate_password_policy=0; --设置密码强度检查等级,其中对应关系为:0/LOW、1/MEDIUM、2/STRONG
set global validate_password_mixed_case_count=0; --设置最小字母数
set global validate_password_special_char_count=0; --设置最小特殊字符数
set global validate_password_number_count=0; --设置最小数字数
set global validate_password_length=1; --设置密码最小长度
alter user user() identified by '0'; --设置当前登录用户的密码,user()函数:返回当前用户,修改密码后直接生效,不用"flush privileges;"

Mysql8.0密码策略
1.修改密码策略,但是没有启动validate_password插件
mysql> set global validate_password_policy=0; 
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
mysql> set global validate_password_mixed_case_count=0; 
ERROR 1193 (HY000): Unknown system variable 'validate_password_mixed_case_count'
修改my.cnf,重新启动mysql服务器以使新设置生效。
my.cnf添加文件如下:
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
systemctl restart mysqld

2. 需要先按照默认的密码策略更改密码,才能设置变量
mysql> set global validate_password_policy=0; 
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

mysql> alter user user() identified by 'LiangQQ1069W.';
Query OK, 0 rows affected (0.01 sec)

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user user() identified by '0'; 
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> 
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
| validate_password_check_user_name    | ON     |
| validate_password_dictionary_file    |        |
| validate_password_length             | 1      |
| validate_password_mixed_case_count   | 0      |
| validate_password_number_count       | 0      |
| validate_password_policy             | LOW    |
| validate_password_special_char_count | 0      |
+--------------------------------------+--------+
14 rows in set (0.00 sec)

3.修改密码策略
show variables like 'validate_password%'; -- 查询密码安全策略的值
set global validate_password.length=1;  --设置密码最小长度
set global validate_password.mixed_case_count=0;  --设置最小字母数
set global validate_password.number_count=0;  --设置最小数字数
set global validate_password.policy=0;  --设置密码强度检查等级,其中对应关系为:0/LOW、1/MEDIUM、2/STRONG
set global validate_password.special_char_count=0;  --设置最小特殊字符数

mysql不显示中文
原因分析:可能是数据库的编码出现了问题。
mysql -u root -p **;    ## 连接本地数据库;
mysql> show variables like 'char%';    ##查看数据库的编码;
mysql> set character_set_results=utf8;    ##临时改变编码方式;
解决办法:修改配置文件,永久生效。
cat /etc/mysql/mysql.conf.d/mysqld.conf    ## 在末尾添加以下内容,然后保存退出;
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值