在IT界 一般都不会轻易的使用最新版本的软件,因为新版本可能会出现各种问题(你原本项目跑的好好的 非要画蛇添足更新版本 然后项目奔溃)小段子: 更新完没事 那么你还是一个普通员工 更新完出事 那么你就是一名"烈士"# 补充1: MySQL有很多版本(5.6、5.7、8.0) 目前企业里面用的比较多的还是5.6左右.# 补充2: MySql默认端口3306
官网下载地址: https://www.mysql.com
第一步:
第二步:
第三步:
第四步:
第五步:
第一步:
第二步:
第三步:
第四步:
第五步:
第六步:
第七步:
注意!!!: 服务端的配置要使用管理员的身份启动DOS命令行.
第一步:
第二步:
第一步:
第二步:
提示:配置文件默认在登陆时就会检测mysql-5.6.45-winx64文件夹下的.ini
后缀名的文件.
目的1:统一字符编码
目的2: 以后不需要指定 iP, 端口, 用户名, 密码
解决: 到mysql-5.6.45-winx64文件夹下自定义my.ini
文件. (提示: 默认mysql在启动时就会去读取配置文件, 添加了配置文件以后, 需要重启mysqld服务端)
;参数解析 ;[mysqld] -—> bin目录下的命令名 ;[client] --> 所有的客户端的全局性配置, 如果登陆时[mysql]中没有指定用户名, 密码而[client] 中指定了, 以[client] 为准 ;[mysql] --> mysql客户端的配置, 如果没有指定就以[client]为准;补充: 5.6.38版本 没有用户名会报错 5.6.40版本 没有用户名不会报错[mysqld]character-set-server=utf8collation-server=utf8_general_ci[client]default-character-set=utf8[mysql]default-character-set=utf8;这里指定你的登录用户名, 登陆时自动检测就不用每次来都需要输入用户名. --> `-uroot`user="root";这里可以指定你的登录密码, 登录时自动检测就不用每次来都需要输入密码. ---> `-p123`password="123"
原理: 客户端输入密码就会到服务端的配置文件中核验. 核验位置: mysql-5.6.45-winx64\data\mysql下的三个文件. user.frm, use.MYD, user.MYI
破解方式一: 暴力破解. 只适合用于mysql安装没多久
破解方式二: 让服务端跳过密码权限表机制
# 步凑1、首先,关掉Mysql进程。 2、运行 mysqld --skip-grant-tables 3、打开另一个命令窗口 运行mysql即可去修改密码4. 刷新权限. flush privileges; 5. 关闭运行 mysqld --skip-grant-tables的DOS命令行端口. 6. 以管理员方式打开cmd. 重启mysql --> net start mysql7. 登录
# 1. windsows + r 键 根据你所输入的名称,为你打开相应的程序、文件夹、文档或Internet资源。cmd 打开DOS界面并可以输入cmd命令services.msc 查看系统服务# 2. windows中管理员打开DOS界面输入cmd命令mysqld –-install 把数据库服务端在后头运行的系统服务(注意:需要管理员权限)mysqld –-remove 把数据库服务端为后台运行的服务卸载(注意:要把该程序先stop关闭)mysqld --skip-grant-tables 跳过mysqld服务端密码检测机制表(注意: 需要先关闭服务端, 并且开启新的DOS界面登录)mysqladmin -uroot -p原密码 password 新密码 改命令直接在终端输入即可 无序进入客户端mysqld --verbose –-help | findstr bind 使用管道命令查看绑定IP用法mysqld --bind--address=IP地址 绑定mysqld的IP地址# 3. mysql客户端连接mysql服务端命令: 再cmd命令行输入以下命令完整写法: (可以本地也可以远程) mysql -h 服务端IP(如果是本次测试就指定127.0.0~255都行. 如果不是就指定服务端的公网IP地址) -P 3306(mysql服务端固定的熟知端口号) -u用户名 -p密码(注意: 密码的指定这里要紧跟其后, 且密码有空格还需要被双引号包裹)缩写方式一: (本地登录. 如果没有配置my.ini文件, 默认普通用户. 如果配置了my.ini文件, 安装配置中的为准) mysql缩写方式二: (本地登录) mysql -u用户 -p密码# 4. mysql命令行命令update mysql.user set password=password(‘密码‘) where user=‘roort‘; 5.6.45 MySQL版本修改密码update mysql.user set authentication_string=password(‘密码‘) where user=‘roort‘; 5.7.25 MySQL版本中的mysql库下的user表中的密码字段从默认5.6.45 MySQL版本编变成了authentication_string. update mysql.user set password_expired=‘N‘ where user=‘roort‘; 5.7.25 MySQL版本默认密码过期, 指定为密码不过期flush privileges; 刷新权限. 只要是修改了mysql库中的数据就需要指定.\G 在MySQL的sql语句后加上\G,表示将查询结果进行按列打印,可以使每个字段打印到单独的行。即将查到的结构旋转90度变成纵向;\s 直接输入\s. 查看数据库中的默认的字符编码, 版本, 当前登录用户等等信息.\c 在MySQL的sql语句后加上\c代表这条mysql语句不要了quit 或者 exit 退出mysql# 5. 补充: windows的cmd命令taskkill /F /IM mysqld.exe 指定进程名杀死该进程taskkill /F /PID 进程pid号 指定进程PID杀死改进程(只有在管理员cmd窗口下才能成功)
我这里下载mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz版本. 进入linux后用命令下载
mkdir /opt/mysqlcd /opt/mysqlwget /tmp/https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
# 1. 安装前,我们可以检测系统是否自带安装 MySQLrpm -qa | grep mysql# 2. 如有,类似 mysql-libs-5.1.52-1.el6_0.1.x86_64那可以选择进行卸载:# rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64 # 普通删除模式# rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64 # 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除# 3. 检查否存在 mariadb 数据库,如有,卸载之,卸载同上rpm -qa | grep mariadb# 4. 如有,类似 mariadb-libs-5.5.56-2.el7.x86_64. 则 卸载# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
# 1. 进入安装包所在目录,解压文件cd /opt/mysqltar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz# 2. 重命名mv mysql-5.7.25-linux-glibc2.12-x86_64 mysql-5.7.25# 3. 添加系统mysql组和mysql用户. 检查mysql组和用户是否存在,如无创建. 类似这种格式 mysql:x:490: 或者这种格式 mysql:x:496:490::/home/mysql:/bin/bashcat /etc/group | grep mysql# 4. 以上为存在的情况,如无,执行添加命令:groupadd mysqluseradd -r -g mysql mysql # useradd -r参数表示mysql用户是系统用户,不可用于登录系统# 5. 安装数据库, 并创建data目录cd /opt/mysql/mysql-5.7.25mkdir data# 6. 将/opt/mysql/mysql-5.7.25的所有者及所属组改为mysqlchown -R mysql.mysql /opt/mysql/mysql-5.7.25# 7. 在/opt/mysql/mysql-5.7.25/support-files目录下创建my_default.cnf. vim /opt/mysql/mysql-5.7.25/support-files/my_default.cnf# 8. 复制以下内容, 使用i模式, 鼠标右键复制进去. 再使用`Esc`键退出修改, 使用`:wq`保存退出. (提示: 以下的;是cnf文件的注释符号, 需要生效去除即可. )[mysqld];skip-grant-tables ;这里是跳过密码机制表, 可以不使用密码登录. 目的是用来破解密码等下有用.sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES basedir = /opt/mysql/mysql-5.7.25datadir = /opt/mysql/mysql-5.7.25/databind-address=0.0.0.0port = 3306 ;mysql默认端口3306socket = /tmp/mysql.sockcharacter-set-server=utf8 log-error = /opt/mysql/mysql-5.7.25/data/mysqld.logpid-file = /opt/mysql/mysql-5.7.25/data/mysqld.pid[mysql]protocol=tcp ;如果不指定. 无法通过socket‘/var/run/mysqld/mysqld连接到本地MySQL服务器. 也就是说客户端无法通过网络进行连接# 9. 拷贝,如果提示是否覆盖,ycp -p /opt/mysql/mysql-5.7.25/support-files/my_default.cnf /etc/my.cnf# 10. 初始化 mysqldcd /opt/mysql/mysql-5.7.25yum install -y libaio # 安装后在初始化就OK了./bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/mysql-5.7.25/ --datadir=/opt/mysql/mysql-5.7.25/data/ # 11. 初始化完成之后,查看日志中的临时密码cat /opt/mysql/mysql-5.7.25/data/mysqld.log# 2019-04-08T06:14:29.790033Z 1 [Note] A temporary password is generated for root@localhost: a8?DQir=T+k+# 12. 把启动脚本放到开机初始化目录cp /opt/mysql/mysql-5.7.25/support-files/mysql.server /etc/init.d/mysql# 13. 启动mysql服务service mysql start# 14. 配置环境变量. vim /etc/profile # 进入以后使用i模式, 写入以下内容. 如果有空格就需要加双引号. 如: "$PATH:/opt/mysql/mysql-5.7.25/bin". 写完内容以后`Esc`退出修改, 使用`:wq`保存退出.export PATH=$PATH:/opt/mysql/mysql-5.7.25/bin# 15. 使用source命令使修改立刻生效source /etc/profile# 16. 登录mysql,密码为初始密码. 第11步指定的密码. 如果无效请看接下来的通过跳过密码检测机制表破解密码.cd /opt/mysql/mysql-5.7.25./bin/mysql -u root -p# 17. 修改密码. # 注意1: 因为是5.7.25版本密码从5.6版本的password修改成了anthentication_string. # 注意2: 5.7.25版本的password_expired字段密码默认过期是Y, 我们下面要修改, 然密码不过期. 5.6则没有这种问题# update mysql.user set password=password(‘123456‘) where user=‘root‘;update mysql.user set anthentication_string=password(‘123456‘) where user=‘root‘;update mysql.user set password_expired=‘N‘ where user=‘root‘;flush privileges;quit# 18. 添加远程访问权限. 让所有的客户端进行访问默认localhost要修改为%update mysql.user set host=‘%‘ where user=‘root‘;flush privileges;# 19. 重启mysql生效# service mysql stop# service mysql start # 或service mysql restart
# 1. 编辑/etc/my.cnf文件, 输入`i`进入修改模式, 将上面第8步的`;`注释符取出. 输入`Esc`退出修改模式, 再输入`:wq`保存并退出文件.vim /etc/my.cnf# 2. 重启服务端service mysql restart# 3. 由于上面设置了环境变量. 直接登录mysql. 密码不用输入直接回车mysql -uroot -p# 4. 修改密码, 指定密码永久生效, 刷新权限, 退出update mysql.user set authentication_string=password(‘指定你的密码‘) where user=‘root‘;update mysql.user set password_expired=‘N‘ where user=‘root‘;flush privileges;quit# 5. 编辑/etc/my.cnf文件, 输入`i`进入修改模式, 将上面第8步的skop-grant-tables前添加`;`注释符 输入`Esc`退出修改模式, 再输入`:wq`保存并退出文件.vim /etc/my.cnf# 6. 重启服务端service mysql restart# 7. 正常登录. 接着下面输入你的密码.mysql -uroot -p
前提: 防火墙的入口方向是允许的, 服务端开启了你当前子网的外网IP访问权限 + 3306端口
如何查看你当前子网的外网IP? 打开浏览器输入ip
就能查看.
# 进入cmd本地命令行输入以下命令. 提示: 以下-p输入密码密码如果有空格需要指定双引号包含, -p后面必须紧跟密码.mysql -h 服务端的公网Ip -P 3306 -u用户(如果是root用户就直接指定root) -p密码
重置密码遇到ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using passwor:yes)问题: https://blog.csdn.net/vv19910825/article/details/82979563
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: https://blog.csdn.net/eagle89/article/details/78411184
修改用户密码报错ERROR 1054 (42S22): Unknown Column ‘Password‘ In ‘Field List‘解决办法: https://www.cnblogs.com/wangbaobao/p/7087032.html
mysql5.7密码过期ERROR 1862 (HY000): Your password has expired. To log in you must change: https://blog.csdn.net/zhaomax/article/details/78868822
MySQL出现:ERROR 1049 (42000): Unknown database ‘XXX‘解决方法: https://blog.csdn.net/m0_37482190/article/details/89222645
https://www.cnblogs.com/jpfss/p/6560703.html