文章目录
centos7 .*tar包安装 MySQL5.7
①源码安装,优点是安装包比较小,只有十多M,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错;
②使用官方编译好的二进制文件安装,优点是安装速度快,安装步骤简单,缺点是安装包很大,300M左右。以下介绍linux使用官方编译好的二进制包安装mysql。
到mysql官网下载mysql编译好的二进制安装包,在下载页面Select Platform:选项选择linux-generic,然后把页面拉到底部,64位系统下载Linux - Generic (glibc 2.5) (x86, 64-bit),32位系统下载Linux - Generic (glibc 2.5) (x86, 32-bit)
下载地址:https://www.mysql.com/downloads/
选择community server
点击DOWLOAD,选择版本,当前选择的5.6版本
点击下载mysql-5.6.38-linux-glibc2.12-i686.tar.gz,选择no thanks
一、CentOS7.4系统自带mariadb
# 查看系统自带的Mariadb
[root@vmtest ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
# 卸载系统自带的Mariadb
[root@vmtest ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
# 删除etc目录下的my.cnf
[root@vmtest ~]# rm /etc/my.cnf
二、检查mysql是否存在
# 检查mysql是否存在
[root@VMTest ~]# rpm -qa | grep mysql
[root@VMTest ~]#
三、查看用户和组是否存在
1)检查mysql组合用户是否存在
# 检查mysql组和用户是否存在,如无则创建
[root@VMTest ~]# cat /etc/group | grep mysql
[root@VMTest ~]# cat /etc/passwd | grep mysql
# 查询全部用户(只是做记录,没必要执行)
[root@VMTest ~]# cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F ":" '{print $1 "|" $3 "1" $4}' | more
root|010
sync|510
mysql|99711001
2)若不存在,则创建mysql组和用户
# 创建mysql用户组
[root@VMTest ~]# groupadd mysql
# 创建一个用户名为mysql的用户,并加入mysql用户组
[root@VMTest ~]# useradd -g mysql mysql
# 制定password 为111111
[root@VMTest ~]# passwd mysql
Changing password for user mysql.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
四、下载mysql的tar包
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
五、上传第四步下载的mysql TAR包到
# 进入/usr/local/src文件夹
[root@VMTest ~]# cd /usr/local/src/
# 上传mysql TAR包
[root@VMTest src]# rz
# 解压tar文件
[root@VMTest src]# tar xvf mysql-5.7.22-el7-x86_64.tar
# 解压mysql-5.7.22-el7-x86_64.tar.gz
[root@VMTest src]# tar -zxvf mysql-5.7.22-el7-x86_64.tar.gz
#复制解压后的mysql目录到系统的本地软件目录:
cp mysql-5.6.17-linux-glibc2.5-i686 /usr/local/mysql -r
注意:目录结尾不要加/
# 解压后的文件移动到/usr/local文件夹
[root@VMTest src]# mv mysql-5.7.22-el7-x86_64 /usr/local
# 进入/usr/local下,修改为mysql
[root@VMTest src]# cd /usr/local
[root@VMTest local]# mv mysql-5.7.22-el7-x86_64 mysql
六、更改所属的组和用户
# 更改所属的组和用户
[root@VMTest local]# chown -R mysql mysql/
[root@VMTest local]# chgrp -R mysql mysql/
[root@VMTest local]# cd mysql/
[root@VMTest mysql]# mkdir data
[root@VMTest mysql]# chown -R mysql:mysql data
七、进入mysql文件夹,并安装mysql(初始化数据库)
这一点比较坑,网上的教程大多是mysql_install_db
方式安装的,这一步也是遇到问题最最多的,折腾了好久,但是mysql_install_db
命令是不推荐的,也提示使用mysqld
来安装
--initialize
用于“ 默认安全 ”安装(即包括生成随机初始root密码)。
使用--initialize-insecure
选项,不会 root生成密码,数据目录的初始化可能会失败,因为系统中缺少一些必需的软件库。
# 进入mysql
[root@VMTest etc]# cd /usr/local/mysql/
# 安装mysql
[root@VMTest mysql]# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
or(推荐):
[root@VMTest mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
2018-07-04 15:46:02 [WARNING] 5mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2018-07-04 15:46:05 [WARNING] The bootstrap log isn't empty:
2018-07-04 15:46:05 [WARNING] 2018-07-04T15:46:02.728710Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
2018-07-01T15:46:02.729161Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2018-07-04 T15:46:02.729167Z 0 [Warning] Changed limits: table_open_cache: 407 (requested 2000)
添加开机启动,把启动脚本放到开机初始化目录
[root@VMTest mysql]# cp ./support-files/mysql.server /etc/init.d/mysqld
[root@VMTest mysql]# chown 777 /etc/my.cnf
[root@VMTest mysql]# chmod +x /etc/init.d/mysqld
创建默认的SSL和RSA文件:(这里仅做记录,不必执行)
./bin/mysql_ssl_rsa_setup
八、在/etc下创建my.cnf文件
# 进入/etc文件夹下
[root@VMTest mysql]# cd /etc
# 创建my.cnf文件
[root@VMTest etc]# touch my.cnf
# 编辑my.cnf
[root@VMTest etc]# vim my.cnf
1)my.cnf添加如下内容:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
2)查看my.cnf内容
# 查看my.cnf文件
[root@VMTest mysql]# cat /etc/my.cnf
九、启动mysql
# 启动mysql
[root@VMTest mysql]# /etc/init.d/mysqld start
or
[root@VMTest mysql]# ./mysqld --defaults-file=/etc/my.cnf --user=root
MySQL manager or server PID file could not be found! [FAILED]
# 1、查看进程
[root@VMTest mysql]# ps aux|grep mysql
root 10031 0.0 0.1 113264 1616 pts/0 S 14:36 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/iZ2ze3hm3gyjyjz628l7rgZ.pid
mysql 10220 0.0 19.1 1140876 195072 pts/0 Sl 14:36 0:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=iZ2ze3hm3gyjyjz628l7rgZ.err --pid-file=/usr/local/mysql/data/iZ2ze3hm3gyjyjz628l7rgZ.pid --port=3306
root 10421 0.0 0.0 112660 968 pts/0 R+ 15:51 0:00 grep --color=auto mysql
# 2、杀死进程
[root@VMTest mysql]# kill -9 10031
[root@VMTest mysql]# kill -9 10220
# 3、重启mysql
[root@VMTest mysql]# /etc/init.d/mysqld restart
Shutting down MySQL..
Starting MySQL.
十、设置开机启动
#设置开机启动
[root@VMTest mysql]# chkconfig --level 35 mysqld on
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# chmod +x /etc/rc.d/init.d/mysqld
[root@VMTest mysql]# chkconfig --add mysqld
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# service mysqld status
SUCCESS! MySQL running (4475)
十一、修改配置文件
# 进入/etc/profile文件夹
[root@VMTest mysql]# vim /etc/profile
1)修改/etc/profile,在最后添加如下内容
# 修改/etc/profile文件
#set mysql environment
export PATH=$PATH:/usr/local/mysql/bin
# 使文件生效
[root@VMTest mysql]# source /etc/profile
十二、获得mysql初始密码
# 1、获得mysql初始密码
[root@VMTest bin]# cat /root/.mysql_secret
# Password set for user 'root@localhost' at 2017-04-17 17:40:02
_pB*3VZl5T<6
# 2、修改密码
[root@VMTest bin]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 53
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set PASSWORD = PASSWORD('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
十三、添加远程访问权限
# 添加远程访问权限
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set host='%' where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
3 rows in set (0.00 sec)
十四、重启mysql生效
# 重启mysql
[root@VMTest bin]# /etc/init.d/mysqld restart
Shutting down MySQL..
Starting MySQL.
备注:
由于安装在/usr/local下面的mysql,因此可以在任何文件夹启动mysql
若安装在别的文件夹,请执行以下命令:
# 为了在任何目录下可以登录mysql
ln -s /你的mysql路径/mysql /usr/local/mysql
关闭防火墙
不关闭防火墙,外网不能访问
CentOS 7.0默认使用的是firewall作为防火墙
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
可能遇到的问题
/root/.mysql_secret: No such file or directory
新版本的mysql的密码初始化方式已经改了
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h mysql1 password 'new-password'
重置密码遇到ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using passwor:yes)问题
一般这个错误是由密码错误引起,解决的办法自然就是重置密码。
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO) :表示没有生成root的临时密码
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) :表示生成了root的临时密码。
假设我们使用的是root账户。
1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:
vim /etc/my.cnf(注:windows下修改的是my.ini)
在[mysqld]后面任意一行添加skip-grant-tables
用来跳过密码验证的过程,如下图所示:
保存文档并退出
2.接下来我们需要重启MySQL:
/etc/init.d/mysql restart
(有些用户可能需要使用/etc/init.d/mysqld restart
)
3.重启之后输入mysql即可进入mysql。
4.接下来就是用sql来修改root的密码
进入到终端当中,敲入 mysql -u root -p
命令然后回车,当需要输入密码时,直接按enter键,便可以不用密码登录到数据库当中
(5.7.11以前) > update user set password=password("123456") where user="root";
(5.7.11 或者以后)> update user set authentication_string=password("123456") where user="root";
在这儿我是用的是:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'HuaZai12345!';
mysql> flush privileges;
mysql> quit
注意:如果在执行该步骤的时候出现ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
错误。则执行下 flush privileges
命令,再执行该命令即可。
到这里root账户就已经重置成新的密码了。
5.编辑my.cnf
,去掉刚才添加的内容,然后重启MySQL。大功告成!
网上有很多关于这个问题的解决说明,很多刚接触的朋友可能比较迷惑的是在自己的平台上找不到my.cnf或者my.ini文件,如果你是Linux,使用如下方式可以搜索到
whereis my.cnf
至于windows平台,去安装目录下找一下my.ini吧。
ERROR 1133 (42000): Can’t find any matching row in the user table
1、问题描述
使用set password for 'root'@'localhost'=password('MyNewPass4!');
命令修改mysql数据库root用户密码提示ERROR 1133 (42000): Can't find any matching row in the user table
错误
2、主要原因
错误提示的字面意思:在用户表中找不到任何匹配的行
登录mysql执行以下命令
use mysql;
select Host,User from user;
主要原因是修改密码的条件不否
3、解决办法
将set password for 'root'@'localhost'=password('MyNewPass4!');
代码中的localhost
修改%
,与数据库Host字段值一致set password for 'root'@'%'=password('MyNewPass4!');
刷新flush privileges;
参考:https://blog.csdn.net/justlpf/article/details/82905963
https://blog.csdn.net/weixin_38281964/article/details/82016431
https://www.cnblogs.com/code-changeworld/p/4364645.html
问题参考:https://blog.csdn.net/vv19910825/article/details/82979563
https://blog.csdn.net/hello_world_qwp/article/details/80346904
https://blog.csdn.net/github_38336924/article/details/82702017
https://blog.csdn.net/memory6364/article/details/82426052
https://www.cnblogs.com/kerrycode/p/3861719.html
https://www.cnblogs.com/1394htw/p/12327530.html
所有平台的Mysql下载地址为: MySQL 下载. 挑选你需要的 MySQL Community Server 版本及对应的平台。
centos系统yum安装mysql
接下来我们在 Centos 系统下使用 yum 命令安装 MySql:
检测系统是否自带安装 mysql:
rpm -qa | grep mysql
如果你系统有安装,那可以选择进行卸载:
rpm -e mysql // 普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
安装 mysql:
yum install mysql
yum install mysql-server
yum install mysql-devel
启动 mysql:
service mysqld start
注意:如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置。
如果是 CentOS 7 版本,由于 MySQL数据库已从默认的程序列表中移除,可以使用 mariadb 代替:
yum install mariadb-server mariadb
mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动
验证Mysql安装
在成功安装Mysql后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证Mysql是否工作正常。
使用 mysqladmin 工具来获取服务器状态:
使用 mysqladmin 命令俩检查服务器的版本,在linux上该二进制文件位于 /usr/bin
on linux ,在window上该二进制文件位于C:\mysql\bin
。
[root@host]# mysqladmin --version
linux上该命令将输出以下结果,该结果基于你的系统信息:
mysqladmin Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386
如果以上命令执行后未输入任何信息,说明你的Mysql未安装成功。
使用 MySQL Client(Mysql客户端) 执行简单的SQL命令
你可以在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到Mysql服务器上,默认情况下Mysql服务器的密码为空,所以本实例不需要输入密码。
命令如下:
[root@host]# mysql
以上命令执行后会输出 mysql>提示符,这说明你已经成功连接到Mysql服务器上,你可以在 mysql> 提示符执行SQL命令:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.13 sec)
Mysql安装后需要做的
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:
[root@host]# mysqladmin -u root password "new_password";
现在你可以通过以下命令来连接到Mysql服务器:
[root@host]# mysql -u root -p
Enter password:*******
注意:在输入密码时,密码是不会显示了,你正确输入即可。
win10下载与安装mysql详细步骤
下载mysql
下载地址:https://dev.mysql.com/downloads/mysql/5.1.html#downloads
下载完以后,解压到自己想要安装的目录下,文件如下图所示:
解压后的目录并没有的my.ini⽂件,没关系可以自行创建在安装根目录下添加的my.ini(新建文本文件,将文件类型改为的.ini),写入基本配置:
[mysqld]
# 设置3306端⼝
port=3306
# 设置mysql的安装⽬录 ----------是你的⽂件路径-------------
basedir=D:\\soft\\mysql-8.0.29-winx64
# 设置mysql数据库的数据的存放⽬录 ---------是你的⽂件路径data⽂件夹⾃⾏创建
datadir=D:\\soft\\mysql-8.0.29-winx64\\data
# 允许最⼤连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使⽤的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
# 默认使⽤“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使⽤的端⼝
port=3306
default-character-set=utf8mb4
[WinMySQLAdmin]
D:\\soft\\mysql-8.0.29-winx64\\bin\\mysqld.exe
注意:basedir、datadir以及最后一行,要改成你自己的路径
配置环境
右击【此电脑】,选中【属性】,点击【高级系统设置】,如下图,点击【环境变量】
然后在系统变量里找到【path】,然后点击【编辑】,然后点击【新建】,添加mysql的路径,eg:我的填写路径为:D:\soft\mysql-8.0.29-winx64,如下图所示:注意路径填写到bin即可
安装mysql
使用管理员身份打开命令提示符,win10系统下,点击【开始】,然后找到【Windows系统】,点击【命令提示符】,右击选择【更多】,选择【以管理员身份运行】,然后输入命令切换目录至mysql包所在的bin目录,
### 数据库初始化
D:\soft\mysql-8.0.29-winx64\bin>mysqld --initialize --console
2022-05-12T09:59:51.782458Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
2022-05-12T09:59:51.782473Z 0 [System] [MY-013169] [Server] D:\soft\mysql-8.0.29-winx64\bin\mysqld.exe (mysqld 8.0.29) initializing of server in progress as process 43212
2022-05-12T09:59:51.821885Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-05-12T09:59:52.398194Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-05-12T09:59:53.925412Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: t.epiHJ8rsi2
### 安装mysql服务
D:\soft\mysql-8.0.29-winx64\bin>mysqld --install mysql
The service already exists!
The current server installed: D:\soft\mysql-8.0.29-winx64\bin\mysqld.exe MySQL
## 启动mysql服务
D:\soft\mysql-8.0.29-winx64\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。
### 登录mysql
D:\soft\mysql-8.0.29-winx64\bin>mysql -uroot -p
Enter password: ************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.29
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123456';
Query OK, 0 rows affected (0.01 sec)
# 允许root用户远程登陆
mysql> use mysql;
Database changed
mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
4 rows in set (0.00 sec)
# 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> help contents;
mysql>
# 可以输出quit或者exit退出
mysql> quit;
Bye
# 停止mysql服务
D:\soft\mysql-8.0.29-winx64\bin>net stop mysql
MySQL 服务正在停止..
MySQL 服务已成功停止。
- 初始密码
注意:每次登录使用 mysql,都必须先启动服务
参考:http://www.runoob.com/mysql/mysql-install.html
https://www.cnblogs.com/xinjing-jingxin/p/8025805.html
https://jingyan.baidu.com/album/a378c9609eb652b3282830fd.html?picindex=3
https://blog.csdn.net/qq_37502106/article/details/80199262
win10安装mysql:
https://blog.csdn.net/m0_49549614/article/details/116759973
https://wenku.baidu.com/view/ec913f5a59cfa1c7aa00b52acfc789eb162d9e54.html
https://blog.csdn.net/weixin_46344594/article/details/123111071
https://blog.csdn.net/qq_43358160/article/details/116862012