百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

01_MySql下载及安装配置 mysql 下载安装教程

yuyutoo 2024-12-20 19:35 9 浏览 0 评论

MySql下载及安装配置

li_zliang


一、Windows环境安装MySQL

1.1 下载MySQL(Community版)免安装软件包

1.2 解压缩软件包

1.3 创建my.ini文件

1.3 初始化MySQL

1.4 安装mysqld

1.5 启动MySQL服务

1.6 登录MySQL

1.7 修改密码

1.8 卸载mysql

二、CentOS7环境安装MySQL

2.1 下载MySQL

2.2 检查MySQL是否已经存在

2.3 检查mariadb并卸载

2.4 创建解压目录并上传解压

2.5 安装

2.6 查看安装

2.7 启动mysqld

2.8 查看原始密码

2.9 修改密码

2.10 修改data目录

2.11 卸载MySql

三、配置访问

3.1 开启防火墙端口(CentOS7)

3.2 客户端连接访问

3.3 设置密码的验证方式

3.4 创建数据库及用户

四、日常操作

五、问题

5.1 Incorrect string value: '\xF0\x9F\x90\xB6\xF0\x9F...' for column 'user_name' at row 1


一、Windows环境安装MySQL

1.1 下载MySQL(Community版)免安装软件包

下载地址:https://dev.mysql.com/downloads/mysql/



1.2 解压缩软件包

本教程是将软件包解压缩到到“D:\Program Files\mysql-8.0.19-winx64”目录下;


1.3 创建my.ini文件

在“D:\Program Files\mysql-8.0.19-winx64”目录下创建my.ini文件;内容如下:

[client]

# 设置mysql客户端默认字符集

default-character-set=utf8


[mysqld]

# 设置3306端口

port = 3306


# 设置mysql的安装目录

basedir=D:\\Program Files\\mysql-8.0.19-winx64


# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错

# datadir=D:\\Program Files\\mysql-8.0.19-winx64\\data


# 允许最大连接数

max_connections=20


# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8


# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB


1.3 初始化MySQL

运行CMD进入bin目录:【开始】-【搜索程序和文件】输入“cmd”,在搜索到的程序图标上点击鼠标右键,选择【以管理员身份运行】

命令行下进入MySQL目录:

xxx> D:

D:\> cd D:\Program Files\mysql-8.0.19-winx64\bin

初始化操作:

D:\Program Files\mysql-8.0.19-winx64\bin> mysqld --initialize --console(随机密码)

执行完成后,会生成root 用户的初始默认密码,adb)JgLpe5Qe 就是初始密码,后续登录需要用到,你也可以在登陆后修改密码;

lo&QebTW1FQt

1.4 安装mysqld

D:\Program Files\mysql-8.0.19-winx64\bin> mysqld -install

mysqld --install [服务名](服务名可以不加默认为mysql);

提示:“mysql”用于执行SQL命令,“mysqld”用于执行数据库命令;


在环境变量中自动增加mysql环境变量; 在服务列表中自动增加mysql服务;


1.5 启动MySQL服务

D:\Program Files\mysql-8.0.19-winx64\bin> net start mysql


1.6 登录MySQL

D:\Program Files\mysql-8.0.19-winx64\bin> mysql -u root -p

D:\Program Files\mysql-8.0.19-winx64\bin> Enter password:(密码即是上面生成的)

我这里输入上面生成的密码提示错误,没有密码反而就登陆上了;不管了;


1.7 修改密码

修改密码:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'cvicsemsa';

//cvicsemsa为你的新密码

设置成功后,exit退出,重新登录验证密码。


1.8 卸载mysql

停止服务:使用net stop mysql('你的服务名') 命令 或 【win+R快捷键】》输入services.msc》进入服务窗口关闭mysql服务;

卸载程序:管理员运行cmd,进入安装目录bin目录,输入mysqld –remove或者sc delete mysql移除服务;

删除文件:进入mysql安装位置,删除mysql的文件夹;

删除C盘隐藏文件夹:显示隐藏文件后,删除C盘下的“C:\ProgramData\MySQL ”所有文件;

删除注册表信息:【win+R快捷键】》输入regedit 命令打开注册表窗口,删除以下文件;

HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL

HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL

删除环境变量里的配置:如果有更改了环境变量,那么删除系统变量中的MYSQL_HOME变量和删除Path变量中的mysql路径;


二、CentOS7环境安装MySQL

2.1 下载MySQL

地址同上,选择RedHat,OS Linux7,选择bundle即可,里面包含的组件最全,主要用到了common/libs/client/server四个;


2.2 检查MySQL是否已经存在

# rpm -qa | grep mysql

如果存在,则按照卸载章节进行删除;


2.3 检查mariadb并卸载

由于MySQL在CentOS7中收费了,所以已经不支持MySQL了,取而代之在CentOS7内部集成了mariadb,而安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB;

# rpm -qa | grep mariadb

mariadb-libs-5.5.56-2.el7.x86_64

# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 //下载删除,--nodeps:不检查依赖关系

# rpm -qa | grep mariadb

2.4 创建解压目录并上传解压

进入/usr/local/目录,创建mysql目录,并将下载的包上传到此目录,进行解压;

# cd /usr/local

# mkdir mysql

# ls -l

-----------上传文件--------------

# tar -xvf mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar.tar //解压 tar 包

# cd /usr/local/mysql

# ls -l


2.5 安装

依次安装 common、libs、client、server;

安装时需要按照以下顺序进行安装rpm包,因为它们之间存在依赖关系;

# rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm

# rpm -ihv mysql-community-client-plugins-8.0.20-1.el7.x86_64.rpm

# rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm

# rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm

# rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm



2.6 查看安装

# rpm -qa | grep mysql

配置文件:/etc/my.cnf

日志文件:/var/log/mysqld.log

服务启动脚本:/usr/lib/systemd/system/mysqld.service


可通过下述命令查找文件:

# find / -name my.cnf

etc/my.cnf

2.7 启动mysqld

启动mysqld服务,并设为开机自动启动。命令:

# service mysqld start //启动

# service mysqld stop //停止

# service mysqld status //状态


centos7+时,采用下述命令:

# systemctl start mysqld.service //centos7,启动

# systemctl stop mysqld.service //centos7,启动

# systemctl status mysqld.service //centos7,状态

# systemctl enable mysqld.service //centos7,设置开机启动


2.8 查看原始密码

在执行 systemctl start mysqld.service 后,会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中;

打开/var/log/mysqld.log文件查看密码:

# cat /var/log/mysqld.log | grep password

26!gEuGY3DEn

2.9 修改密码

使用原始密码登陆,输入命令:

# mysql -u root -p

Enter password: //输入原始密码

通过命令来修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'cvicsemsa';

//cvicsemsa为你的新密码

注意Mysql8密码设置规则必须是大小写字母+特殊符号+数字的类型,一定要复杂,否则提示:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'cvicsemsa';

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

因此,再次修改成复杂密码,这里记录下:Cvicse#2020

exit;或者quit; 退出mysql,使用新密码重新登陆即可;


2.10 修改data目录

由于mysql安装目录比较分散,data目录一般默认为/usr/lib/mysql;但有可能分区挂载的磁盘空间不足; 因此需要扩展分区或者修改data目录为单独挂载磁盘的分区;

以下图为例,根/分区仅50G,不足以支撑,且有单独的磁盘500G挂载到了/SDDCA;因此可将data目录放到/SDDCA下;

第0步:查看

# mysql -u root -p

> show global variables like '%dir%';

第1步:停止服务

# systemctl stop mysqld.service

# systemctl status mysqld.service

第2步:创建目录

# mkdir /SDDCA/mysql_data

--必要时修改该目录所有者及权限

第3步:修改/etc/my.cnf文件

# vi /etc/my.cnf

先注释原来的datadir、

# datadir=/var/lib/mysql

# socket=/var/lib/mysql/mysql.sock

datadir=/SDDCA/mysql_data/

socket=/SDDCA/mysql_data/mysql.sock

第4步:为mysql.sock加连接

ln -s /SDDCA/mysql_data/mysql.sock /var/lib/mysql/mysql.sock

第5步:启动服务并查看

# systemctl start mysqld.service

# mysql -u root -p

> show global variables like '%dir%'



2.11 卸载MySql

第一步:卸载安装的软件:如果执行删除命令时报错,加上--nodeps:不检查依赖关系;

# rpm -qa|grep -i mysql

# rpm -ev mysql-community-server-8.0.15-1.el6.x86_64

# rpm -ev mysql-community-client-8.0.15-1.el6.x86_64

# rpm -ev mysql-community-libs-8.0.15-1.el6.x86_64

# rpm -ev mysql-community-common-8.0.15-1.el6.x86_64

第二步:查找mysql目录,并予以删除:

# find / -name mysql

# rm -rf xxxx

第三步:删除/etc/my.cnf

# rm -rf /etc/my.cnf

第四步:删除/var/log/mysqld.log(如果不删除这个文件,会导致新安装的mysql无法生存新密码,导致无法登陆)

# rm -rf /var/log/mysqld.log


三、配置访问

3.1 开启防火墙端口(CentOS7)

# firewall-cmd --state //查看防火墙状态

# systemctl start firewalld.service //开启防护墙

# systemctl enable firewalld.service //设置防火墙自动启动

# systemctl restart firewalld.service //重启防火墙


# firewall-cmd --zone=public --add-port=3306/tcp --permanent //开启3306端口

--zone #作用域

--add-port=80/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数重启服务器后失效

# systemctl restart firewalld.service


# netstat -ntlp //查看开启的端口

# firewall-cmd --list-ports //查看开启的端口


3.2 客户端连接访问

Navicat等客户端进行配置连接时,默认情况下帐号不允许从远程登陆,只能在localhost;这个时候需要调整服务端配置,有以下两种方式:

  1. 改表法

登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"登录mysql数据库 执行如下命令:

按照如下操作即可:

# mysql -u root -p

inter password:

mysql> use mysql; //登录mysql,并切换至mysql库

mysql> update user set host='%' where user ='root'; //更新域属性,'%'表示允许外部任意IP访问

mysql> FLUSH PRIVILEGES; //刷新MySQL的系统权限

mysql> select host,user,plugin from user; //查看用户信息

mysql> SHOW GRANTS FOR root; //查询root用户的权限

经上述操作,即可在客户端链接mysql服务端了;


  1. 授权法

root用户使用密码Cvicse#2020从任何主机连接到mysql服务器,可按如下操作:

# mysql -u root -p

inter password:

mysql> use mysql; //登录mysql,并切换至mysql库

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

mysql> FLUSH PRIVILEGES; //刷新MySQL的系统权限,注意授权后必须FLUSH PRIVILEGES;否则无法立即生效。


3.3 设置密码的验证方式

在使用Navicat for Mysql(应该是Navicat12之前的版本)连接mysql 8.0时连接的时候可能会出现如下错误:

Authentication plugin 'caching_sha2_password' cannot be loaded

这个是因为8.0使用了更安全的校验模式,mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式客户端不支持;客户端支持的是mysql_native_password 这种加密方式;


办法1:查看mysql 数据库中user表的 plugin字段;可以使用命令将他修改成mysql_native_password加密模式:

update user set plugin='mysql_native_password' where user='root';


办法2:改变你使用账号的校验方式;--------------在前面更改root默认密码时就已经修改了;

# ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "xxxxxxx";

# FLUSH PRIVILEGES;


其实更推荐创建一个新账号使用支持的验证方式,保留root用户原有的加密校验方式,更为安全;

CREATE USER "xxxx@localhost" IDENTIFIED WITH mysql_native_password BY 'xxxxxxxx';


3.4 创建数据库及用户

# mysql -u root -p

inter password:

----创建数据库

mysql> create database statistic charset utf8;

----创建普通用户

-------注意%、localhost、IP的区别;

mysql> create user 'cmvsiac'@'%' identified by 'Cvicse#2021';

----将某个数据库授权给某个用户

-------注意all、select、create等权限

mysql> grant all privileges on statistic.* to 'cmvsiac'@'%';

----查看用户授权

mysql> show grants for cmvsiac;


四、日常操作

主要记录一些mysql日常使用的命令,供以后查询。

1.更改root密码

mysqladmin -uroot password 'yourpassword'

2.远程登陆mysql服务器

mysql -uroot -p -h192.168.137.10 -P3306

3.查询数据库

show databases;

4.进入某个数据库

use databasename;

5.列出数据库中的表

show tables;

6.查看某个表全部字段

desc slow_log;

show create table slow_log\G; (不仅可以显示表信息,还可以显示建表语句)

7.查看当前用户

select user();

8.查看当前所在数据库

select database();

9.创建新数据库(可以指定字符集)

create database db1 charset utf8;

10.创建新表

create table t1 (`id` int(4), `name` char(40));

11.查看数据库版本

select version();

12.查看数据库状态

show status; 当前会话状态

show global status; 全局数据库状态

show slave status\G; 查看主从数据库状态信息

13.查询数据库参数

show variables;

14.修改数据库参数

show variables like 'max_connect%';

set global max_connect_errors = 1000;(重启数据库会失效,要在配置文件中修改)

15.查看当前数据库队列

show processlist;

16.创建普通用户并授权给某个数据库

grant all on databasename.* to 'user1'@'localhost' identified by '123456';

17.查询表数据

select * from mysql.db; //查询该表中的所有字段

select count(*) from mysql.user; //count(*)表示表中有多少行

select db,user from mysql.db; //查询表中的多个字段

select * from mysql.db where host like '10.0.%';在查询语句中可以使用万能匹配 “%”

18.插入一行数据

insert into db1.t1 values (1, 'abc');

19.更改表的某一行数据

update db1.t1 set name='aaa' where id=1;

20.清空表数据

truncate table db1.t1;

21.删除表

drop table db1.t1;

22.清空数据库中的所有表(数据库名是eab12)

mysql -N -s information_schema -e "SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='eab12'" | mysql -f eab12

23.删除数据库

drop database db1;

24.数据库备份

mysqldump -uroot -p'yourpassword' mysql >/tmp/mysql.sql

25.数据库恢复

mysql -uroot -p'yourpassword' mysql </tmp/mysql.sql

26.新建普通用户

CREATE USER name IDENTIFIED BY 'ssapdrow';

27.更改普通用户密码

SET PASSWORD FOR name=PASSWORD('fdddfd');

28.查看name用户权限

SHOW GRANTS FOR name;


五、问题

5.1 Incorrect string value: '\xF0\x9F\x90\xB6\xF0\x9F...' for column 'user_name' at row 1

出现问题是因为字符集问题,具体可上网查阅;


第一步 查看字符集

mysql>show variables like 'character_set%';



第二步 修改服务器端字符集为utf8mb4:修改/etc/my.cnf,增加或修改成下述内容;

[client]

default-character-set=utf8mb4


[mysqld]

character-set-server = utf8mb4

# collation-server = utf8mb4_unicode_ci

# init_connect='SET NAMES utf8mb4'

# skip-character-set-client-handshake = true


[mysql]

default-character-set = utf8mb4


第三步 将已建的表字符集也改为utf8mb4;

alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin;

相关推荐

当 Linux 根分区 (/) 已满时如何释放空间?

根分区(/)是Linux文件系统的核心,包含操作系统核心文件、配置文件、日志文件、缓存和用户数据等。当根分区满载时,系统可能出现无法写入新文件、应用程序崩溃甚至无法启动的情况。常见原因包括:...

玩转 Linux 之:磁盘分区、挂载知多少?

今天来聊聊linux下磁盘分区、挂载的问题,篇幅所限,不会聊的太底层,纯当科普!!1、Linux分区简介1.1主分区vs扩展分区硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两...

Linux 文件搜索神器 find 实战详解,建议收藏

在Linux系统使用中,作为一个管理员,我希望能查找系统中所有的大小超过200M文件,查看近7天系统中哪些文件被修改过,找出所有子目录中的可执行文件,这些任务需求...

Linux 操作系统磁盘操作(linux 磁盘命令)

一、文档介绍本文档描述Linux操作系统下多种场景下的磁盘操作情况。二、名词解释...

Win10新版19603推送:一键清理磁盘空间、首次集成Linux文件管理器

继上周四的Build19592后,微软今晨面向快速通道的Insider会员推送Windows10新预览版,操作系统版本号Build19603。除了一些常规修复,本次更新还带了不少新功能,一起来了...

Android 16允许Linux终端使用手机全部存储空间

IT之家4月20日消息,谷歌Pixel手机正朝着成为强大便携式计算设备的目标迈进。2025年3月的更新中,Linux终端应用的推出为这一转变奠定了重要基础。该应用允许兼容的安卓设备...

Linux 系统管理大容量磁盘(2TB+)操作指南

对于容量超过2TB的磁盘,传统MBR分区表的32位寻址机制存在限制(最大支持2.2TB)。需采用GPT(GUIDPartitionTable)分区方案,其支持64位寻址,理论上限为9.4ZB(9....

Linux 服务器上查看磁盘类型的方法

方法1:使用lsblk命令lsblk输出说明:TYPE列显示设备类型,如disk(物理磁盘)、part(分区)、rom(只读存储)等。...

ESXI7虚机上的Ubuntu Linux 22.04 LVM空间扩容操作记录

本人在实际的使用中经常遇到Vmware上安装的Linux虚机的LVM扩容情况,最终实现lv的扩容,大多数情况因为虚机都是有备用或者可停机的情况,一般情况下通过添加一块物理盘再加入vg,然后扩容lv来实...

5.4K Star很容易!Windows读取Linux磁盘格式工具

[开源日记],分享10k+Star的优质开源项目...

Linux 文件系统监控:用脚本自动化磁盘空间管理

在Linux系统中,文件系统监控是一项非常重要的任务,它可以帮助我们及时发现磁盘空间不足的问题,避免因磁盘满而导致的系统服务不可用。通过编写脚本自动化磁盘空间管理,我们可以更加高效地处理这一问题。下面...

Linux磁盘管理LVM实战(linux实验磁盘管理)

LVM(逻辑卷管理器,LogicalVolumeManager)是一种在Linux系统中用于灵活管理磁盘空间的技术,通过将物理磁盘抽象为逻辑卷,实现动态调整存储容量、跨磁盘扩展等功能。本章节...

Linux查看文件大小:`ls`和`du`为何结果不同?一文讲透原理!

Linux查看文件大小:ls和du为何结果不同?一文讲透原理!在Linux运维中,查看文件大小是日常高频操作。但你是否遇到过以下困惑?...

使用 df 命令检查服务器磁盘满了,但用 du 命令发现实际小于磁盘容量

在Linux系统中,管理员或开发者经常会遇到一个令人困惑的问题:使用...

Linux磁盘爆满紧急救援指南:5步清理释放50GB+小白也能轻松搞定

“服务器卡死?网站崩溃?当Linux系统弹出‘Nospaceleft’的红色警报,别慌!本文手把手教你从‘删库到跑路’进阶为‘磁盘清理大师’,5个关键步骤+30条救命命令,快速释放磁盘空间,拯救你...

取消回复欢迎 发表评论: