CentOS、windows安装MySql5.7

mySQL5.7数据库在CentOS服务器上安装

Posted by Sunfy on 2019-11-22
Words 4.2k and Reading Time 17 Minutes
Viewed Times
Viewed Times
Visitors In Total

mySQL5.7数据库在CentOS服务器上安装

一、安装YUM Repo

1、由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。

下载命令:

1
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

2、然后进行repo的安装:

1
rpm -ivh mysql57-community-release-el7-9.noarch.rpm

执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo

二、使用yum命令即可完成安装

注意:必须进入到 /etc/yum.repos.d/目录后再执行以下脚本

1
2
3
4
5
6
7
8
9
10
11
### 1、安装命令:
yum install mysql-server
### 2、启动msyql:
systemctl start mysqld #启动MySQL
### 3、获取安装时的临时密码(在第一次登录时就是用这个密码):
grep 'temporary password' /var/log/mysqld.log
### 4、倘若没有获取临时密码,则
4.1、删除原来安装过的mysql残留的数据
rm -rf /var/lib/mysql
4.2.再启动mysql
systemctl start mysqld #启动MySQL

三、登录:

1
2
3
4
5
6
7
8
### 1、方式一(已验证):
mysql -u root -p
然后输入密码(刚刚获取的临时密码)
### 2、方式二(未验证):
进入mysql数据库
root@test:/home# mysql -uroot -proot <uroot是用户名,proot是密码>
如:
root@test:/home# mysql -root -XXXX

3、若登录不了,则进行以下配置,跳过登录验证

3.1、重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:

3.2、vim /etc/my.cnf(注:windows下修改的是my.ini)

在文档内搜索mysqld定位到[mysqld]文本段:

/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容)

在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程

3.3、保存文档并退出:

#:wq

3.4、接下来我们需要重启MySQL:

四、登录成功后修改密码

1、注意:这里会进行密码强度校验(密码设置时必须包含大小写字母、特殊符号、数字,并且长度大于8位)

2、如不满足以上条件则会报错,如下图:

密码策略问题异常信息:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

3、解决办法:

3.1、查看 mysql 初始的密码策略,

1
输入语句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 进行查看,

3.2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,

1
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,

3.3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,

1
输入设值语句 “ set global validate_password_length=6; ” 进行设值,

3.4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,

1
输入修改语句 “ ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ” 可以看到修改成功,表示密码策略修改成功了!!!

3.5、注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,

只要设置密码的长度小于 3 ,都将自动设值为 4 ,

3.6、关于 mysql 密码策略相关参数;

1)、validate_password_length 固定密码的总长度;

2)、validate_password_dictionary_file 指定密码验证的文件路径;

3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;

4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;

5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;

关于 validate_password_policy 的取值:

LOW:只验证长度;

1/MEDIUM:验证长度、数字、大小写、特殊字符;

2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;

6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

五、修改密码

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
### 1、方式一(已验证):
ALTER USER 'root'@'localhost' IDENTIFIED BY '@abcd123456';
### 2、方式二(未验证)
set password=password("yourpassword");
方法1: 用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password(‘新密码’);
例子:mysql> set password for root@localhost = password(‘123’);
方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123
方法3:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password(‘123’) where user=’root’ and host=’localhost’;
mysql> flush privileges;
方法4:在忘记root密码的时候,可以这样
以windows为例:
1. 关闭正在运行的MySQL服务。
2. 打开DOS窗口,转到mysql\bin目录。
3. 输入mysqld –skip-grant-tables 回车。–skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
6. 连接权限数据库: use mysql; 。
6. 改密码:update user set password=password(“123”) where user=”root”;(别忘了最后加分号) 。
7. 刷新权限(必须步骤):flush privileges; 。
8. 退出 quit。
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

六、开启远程控制

MySQL默认是没有开启远程控制的,必须添加远程访问的用户,即默认是只能自己访问,别的机器是访问不了的。

1、方式一(已验证):

1
2
3
4
5
6
7
8
9
1.1、连接服务器: mysql -u root -p
1.2、看当前所有数据库:show databases;
1.3、进入mysql数据库:use mysql;
1.4、查看mysql数据库中所有的表:show tables;
1.5、查看user表中的数据:select Host, User,Password from user;
1.6、修改user表中的Host: update user set Host='%' where User='root';
说明: % 代表任意的客户端,可替换成具体IP地址。
1.7、最后刷新一下:flush privileges;
1.8、注意:一定要记得在写sql的时候要在语句完成后加上" ; "**

2、方式二(未验证):

1、使用 grant 命令

1
grant all privileges on 数据库名.表名 to 创建的用户名(root)@"%" identified by "密码";

2、格式说明:

数据库名.表名 如果写成.代表授权所有的数据库 flush privileges; #刷新刚才的内容

如:

1
2
grant all privileges on *.* to root@"113.123.123.1" identified by "123456789";
@ 后面是访问mysql的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)

七、其他配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
### 1、设置安全选项:
mysql_secure_installation
### 2、关闭MySQL
systemctl stop mysqld
### 3、重启MySQL
systemctl restart mysqld
### 4、查看MySQL运行状态
systemctl status mysqld
### 5、设置开机启动
systemctl enable mysqld
### 6、关闭开机启动
systemctl disable mysqld
### 7、配置默认编码为utf8:
vi /etc/my.cnf #添加 [mysqld] character_set_server=utf8 init_connect='SET NAMES utf8'
其他默认配置文件路径:
配置文件:/etc/my.cnf 日志文件:/var/log//var/log/mysqld.log 服务启动脚本:/usr/lib/systemd/system/mysqld.service socket文件:/var/run/mysqld/mysqld.pid
### 8、查看版本
select version();

八、mysql5.7zip安装教程

1.去官网下载满足系统要求的版本 (mysql-5.7.37-winx64.zip)

2.解压到指定目录(D:\database\mysql-5.7.37-winx64)

3.配置环境变量,添加到系统变量Path中,在末尾添加“D:\database\mysql-5.7.37-winx64\bin”,这样就不用每次切换到bin目录才能使用mysql

4.新建my.ini文件(解压包里是没有my-dafault.ini或自带my.ini文件,需自己创建)编辑写入以下信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\database\mysql-5.7.37-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\database\mysql-5.7.37-winx64\data
# 允许最大连接数
max_connections=200
# 设置mysql服务端默认字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

5.mysql初始化,以管理员权限打开cmd命令窗口,切换到”D:\database\mysql-5.7.37-winx64\bin”路径下,输入指令 mysqld —initialize —user=mysql —console ,该命令会在mysql-5.7.21-winx64目录下创建data文件夹及初始数据库,生成root用户和临时密码,红色标注部分多留意。

6.安装mysql服务,继续在窗口输入指令mysqld install MySQL —defaults-file=”C:\Program Files\mysql-5.7.21-winx64\my.ini”路径是你my.ini文件的绝对路径

7.启动mysql服务,输入 net start mysql,启动成功,会出现下面的截图。如果服务一直处于启动中,说明上一步的操作有误,核实my.ini文件路径是否正确

8.修改root用户密码 输入 mysql -u root -p,然后输入5步骤中生成的临时密码。修改密码命令:set password = password(‘新密码’); 注意语句末尾带分号,show databases; 查看一下初始的数据库。

9.至此,mysql已经安装成功了。使用navicat测试一下。

1. MySQl版本:

​ 现在最新版本为8,使用最多的是5.x;

​ 5.0~5.1: 早期产品的延续,升级维护;

​ 5.2~5.3:使用很少

​ 5.4~5.x:MySQL整合了三方公司的新的存储引擎(推荐使用 5.5)

2. Linux 安装

​ 【安装命令:yum、 tar、 rpm】

  1. 手动下载相应的安装文件夹【分为client 和 server 两个安装包】

  2. rpm -ivh 需要安装的软件名称

    或者 使用 yum install mysql 直接进行安装【无需下载直接安装】

  3. 如果软件提示冲突,使用【yum -y remove 要卸载的名称】进行卸载(*是通配符)

    【冲突原因】:可能是系统安装时有默认安装一个MySQL数据库

  4. 安装成功后,查看安装日志,可以新增root用户密码

  5. 安装时先安装服务端,然后再安装客户端。

  6. 如果安装过程中提示“GPG keys …” 安装失败,解决方案:

    ​ rpm -ivh 要安装的软件名称 —force —nodops

  7. 验证是否安装成功:[mysqladmin —version]

  8. 启动:service mysql start

  9. 关闭:service mysql stop

  10. 重启:service mysql restart

  11. 重启电脑后,登陆MySQL: mysql

    1. 如果登陆成功,则正常使用即可;
    2. 如果登陆失败,可能会报错:【/var/lib/mysql/mysql.sock不存在】
    3. 原因是mysql的服务没有启动。
    4. 启动服务:
      1. 每次使用前手动启动服务: /etc/init.d/mysql start
      2. 开机自启: chkconfig mysql on, 关闭chkconfig mysql off
      3. 检查开始是否自动启动:nesysv

linux安装mysql教程

1系统约定
安装文件下载目录:/data/software
Mysql目录安装位置:/usr/local/mysql
数据库保存位置:/data/mysql
日志保存位置:/data/log/mysql

2下载mysql
在官网:http://dev.mysql.com/downloads/mysql/ 中,选择以下版本的mysql下载:

img

执行如下命名:
#mkdir /data/software
#cd /data/software

—下载安装包

—建议:在windows上使用迅雷下载,速度很快(我的是1M/s),然后用工具(Xftp)上传到 /data/software目录下;
#wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

3解压压缩包到目标位置

#cd /data/software

—解压压缩包

#tar -xzvf /data/software/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

—移动并修改文件名

#mv /data/software/mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql

4创建数据仓库目录

—/data/mysql 数据仓库目录
# mkdir /data/mysql
#ls /data/

img

**5新建mysql用户、组及目录

**# —-新建一个msyql组
# useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql —-新建msyql用户禁止登录shell

6改变目录属有者

#cd /usr/local/mysql
#pwd
#chown -R mysql .
#chgrp -R mysql .

img

#chown -R mysql /data/mysql

**7配置参数

**# bin/mysqld —initialize —user=mysql —basedir=/usr/local/mysql —datadir=/data/mysql

img

此处可能出现的问题

如图mysqld —initialize —console后出现报错

在这里插入图片描述

initialize specified but the data directory has files in it.
Newly created data directory
其实是data中存在了已有的数据 ,删除data 文件中的数据即可。

此处需要注意记录生成的临时密码,如上文结尾处的:YLi>7ecpe;YP
#bin/mysql_ssl_rsa_setup —datadir=/data/mysql

img

8修改系统配置文件

#cd /usr/local/mysql/support-files

img

# cp my-default.cnf /etc/my.cnf
# cp mysql.server /etc/init.d/mysql

# vim /etc/init.d/mysql

修改以下内容:

img

9启动mysql

# /etc/init.d/mysql start

—登陆

# mysql -hlocalhost -uroot -p

  —如果出现:-bash: mysql: command not found

  —就执行: # ln -s /usr/local/mysql/bin/mysql /usr/bin —没有出现就不用执行

—输入第6步生成的临时密码

—修改密码

mysql> set password=password(‘root’);

—设置root账户的host地址(修改了才可以远程连接)

mysql>grant all privileges on . to ‘root’@’%’ identified by ‘root’;

此处可能出现的问题

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
【mysql】You must reset your password using ALTER USER statement before executing this statement报错处理

安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决方式如下:

MySQL版本5.7.6版本以前用户可以使用如下命令:

mysql> SET PASSWORD = PASSWORD('Xiaoming250');
MySQL版本5.7.6版本开始的用户可以使用如下命令:

mysql> ALTER USER USER() IDENTIFIED BY 'Xiaoming250';
如果不清楚自己是什么版本,可以将两条都尝试一下。

对于出现此种情况,感兴趣的同学可以接着往下看,

原因分析:

MySQL版本5.6.6版本起,添加了password_expired功能,它允许设置用户的过期时间。这个特性已经添加到mysql.user数据表,但是它的默认值是”N”,可以使用ALTER USER语句来修改这个值。

输入以下命令,将账号密码强制到期:

mysql> ALTER USER 'xiaoming'@'localhost' PASSWORD EXPIRE;
此时,用户可以登录到MYSQL服务器,但是在用户为设置新密码之前,不能运行任何命令,就会得到上图的报错,修改密码即可正常运行账户权限内的所有命令。由于此版本密码过期天数无法通过命令来实现,所以DBA可以通过cron定时器任务来设置MySQL用户的密码过期时间。

MySQL 5.7.4版开始,用户的密码过期时间这个特性得以改进,可以通过一个全局变量default_password_lifetime来设置密码过期的策略,此全局变量可以设置一个全局的自动密码过期策略。可以在MySQL的my.cnf配置文件中设置一个默认值,这会使得所有MySQL用户的密码过期时间都为120天,MySQL会从启动时开始计算时间。my.cnf配置如下:

[mysqld]
default_password_lifetime=120
如果要设置密码永不过期,my.cnf配置如下:

[mysqld]
default_password_lifetime=0
如果要为每个具体的用户账户设置单独的特定值,可以使用以下命令完成(注意:此命令会覆盖全局策略),单位是“天”,命令如下:

ALTER USER ‘xiaoming’@‘localhost' PASSWORD EXPIRE INTERVAL 250 DAY;
如果让用户恢复默认策略,命令如下:

ALTER USER 'xiaoming'@'localhost' PASSWORD EXPIRE DEFAULT;
个别使用者为了后期麻烦,会将密码过期功能禁用,命令如下:

ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE NEVER;
如想进一步学习请参考guan官网:https://dev.mysql.com/doc/refman/5.7/en/password-management.html
————————————————
版权声明:本文为CSDN博主「不忘初_心」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/muziljx/article/details/81541896

mysql>flush privileges;

—查看表

mysql> use mysql;
mysql> select host,user from user;

—这里就可以使用远程连接测试了;

img

如提示不能成功连接,可能需要添加需要监听的端口

/sbin/iptables -I INPUT -p tcp —dport 3306 -j ACCEPT

10添加系统路径
# vim /etc/profile
添加:
export PATH=/usr/local/mysql/bin:$PATH
如下:

img

# source /etc/profile

**11配置mysql自动启动

**# chmod 755 /etc/init.d/mysql
# chkconfig —add mysql
# chkconfig —level 345 mysql on

以上就是linux环境Mysql 5.7.13安装教程,希望对大家的学习有所帮助。

补充:

—退出mysql命令窗口

#exit

—查看mysql状态

#service mysql status

—停止mysql

#service mysql stop

—启动mysql

#service mysql start

附my.cnf(这是一个配置mysql配置文件,暂时可以不用管,如你想钻研 你可以百度或google “mysql my.cnf 配置详情”)

/etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# DO NOT EDIT THIS FILE. It’s a template which will be copied to the
#
default location during install, and will be replaced if you
# * upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 10G

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin
character-set-server=utf8
collation-server=utf8_bin
init-connect=’SET NAMES utf8’
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /export/mysql/var
port = 3306
server_id = 22206
socket = /export/mysql/mysql.sock
binlog_format = statement
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
log_bin_trust_function_creators = on
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

lower_case_table_names=1


Copyright 2021 sunfy.top ALL Rights Reserved

...

...

00:00
00:00