下面主要介绍了:
1).如何在linux环境中安装mysql
2).忘记密码怎么办
3).修改密码
…
linux安装mysql-5.7.27
下载安装包地址:
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
一.下载安装包
- 我下载到 /opt/mysql/ 下
# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
二.解压安装包
- 我解压在了 /opt/mysql/ 下
# tar -zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
三.将解压的名称修改一下
# mv mysql-5.7.27-linux-glibc2.12-x86_64 mysql
四.创建用户组和用户
# groupadd mysql
# useradd -r -g mysql mysql
五.创建放数据库的目录
- 我放在的mysql服务的根目录下 /opt/mysql/mysql/
# cd mysql
# mkdir data
六.授权
- 第二个命令是将mysql/下的文件或目录全部递归设置为755
- 在 /opt/mysql/ 下执行
# cd ..
# chown -R mysql:mysql mysql/
# chmod -R 755 mysql/
七.配置文件
# vim /etc/my.cnf
修改配置(必须和下面一致):
[mysqld]
# 设置mysql数据库的数据的存放目录,是data
datadir=/opt/mysql/mysql/data
#设置MySQL安装路径
basedir=/opt/mysql/mysql
#设置数据库连接端口
port = 3306
#设置mysql服务器的字符集
character-set-server=utf8
# 1是在哪个用户下执行mysqld程序,2 mysqld程序创建的文件,目录的用户权限是哪个用户.
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
#[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
log-error=/opt/mysql/mysql/data/err.log
pid-file=/opt/mysql/mysql/data/mysql.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
八.初始化数据库
- 进入mysql的bin目录
# cd /opt/mysql/mysql/bin
# ./mysqld --defaults-file=/etc/my.cnf --basedir=/opt/mysql/mysql/ --datadir=/opt/mysql/mysql/data/ --user=mysql --initialize
报错:
1…/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
# yum install -y libaio-devel.x86_64
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hkf4lkp8-1598154880191)(C:\Users\fei\Desktop\技术大全\linux安装程序大集\mysql\images\初始化mysql.png)]
- 初始化之后,在/opt/mysql/mysql/data/err.log中会有生成的密码
九.更改mysql.server的位置
# ln -s /opt/mysql/mysql/support-files/mysql.server /etc/init.d/mysql
十.启动mysql
# service mysql start
# ps -ef|grep mysql (查看是否有进程)
十一.登录mysql:
1).# ./mysql -uroot -p
2). 回车
3).输入密码(粘贴复制生成的密码即可)
- 登录没有问题,但是你会发现操作数据库的时候报错:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KgeE6asc-1598154880197)(C:\Users\fei\Desktop\技术大全\linux安装程序大集\mysql\images\操作数据库报错.png)]
说 - 在执行此语句之前,必须使用ALTER USER语句重置密码,那就重置呗(参考下面MySQL 5.7推荐使用ALTER USER修改密码)来选择修改的语句,我使用的是这个(貌似只能用这个):
# ALTER USER USER() IDENTIFIED BY 'root';
# flush privileges;
# quit
重新登录用root密码
开启远程连接
1|mysql>use mysql;
2|msyql>update user set user.Host='%' where user.User='root';
3|mysql>flush privileges;
忘记密码:
1).修改配置文件
# service mysql stop
# vim /etc/my.cnf
2).在文件中加入一行,大致意思为跳过验证
skip-grant-tables
3).退出保存文件,启动mysql
# service mysql start
4).登录
- (注意此命令要在bin目录下执行,因为没有添加环境变量)
- 输入完下面的命令点回车,不输入密码,再次回车
# ./mysql -uroot -p
5).修改数据库
- 下面update的SQL语句熟悉吗,应该明白什么意思了吧
# use mysql;
# update user set authentication_string=password('123456') where user='root';
# flush privileges;
# quit
6).将刚刚配置文件中的配置删除或注释
# service mysql stop
# vim /etc/my.cnf
# service mysql start
7).保存退出再次登录mysql就可以了
备注:
1).忘记密码,修改密码的时候,由于添加了
skip-grant-tables
配置,是不能使用ALTER 命令来修改密码的,只能使用上面的UPDATE
修改密码:
1).登录mysql
2).执行命令(永久密码,不过期)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
下面这是第一次改密码的时候遇到的问题,就是参数不对引发的报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Hhyy2FS-1598154880200)(C:\Users\fei\Desktop\技术大全\linux安装程序大集\mysql\images\修改密码.png)]
3).显示成功后,表示密码已改,本人测试不用执行任何刷新命令
添加环境变量:
1).编辑文件
# vim /etc/profile
2).增加配置
# mysql path info
export PATH=/opt/mysql/mysql/bin:$PATH
3).保存退出,刷新配置
source /etc/profile
MySQL 5.7推荐使用ALTER USER修改密码
MySQL修改用户的密码主要有两种方法:ALTER USER 和SET PASSWORD
1.)ALTER USER
基本使用
ALTER USER testuser IDENTIFIED BY '123456';
修改当前登录用户
ALTER USER USER() IDENTIFIED BY 'root';
使密码过期
ALTER USER testuser IDENTIFIED BY '123456' PASSWORD EXPIRE;
使密码从不过期
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
按默认设置过期时间
ALTER USER testuser IDENTIFIED BY '123456' PASSWORD EXPIRE DEFAULT;
指定过期间隔
ALTER USER testuser IDENTIFIED BY '123456' PASSWORD EXPIRE INTERVAL 90 DAY;
- 在MySQL文档里,推荐使用ALTER USER修改用户密码
2).SET PASSWORD
使用SET PASSWORD的password有两种:
使用默认加密
SET PASSWORD FOR testuser = '123456'
使用PASSWORD()函数加密
SET PASSWORD FOR testuser = PASSWORD("123456")
注意:使用PASSWORD(‘auth_string’)的方式已经被废弃,在以后的版本会把它移除,所以不建议使用它来修改密码。