本文发布于363天前,最后更新于363天前,其中的信息可能有所发展或是发生改变。
1.参考文章
- Linux安装mysql5.7详细教程-腾讯云开发者社区-腾讯云 (tencent.com)
- mysql时报错:mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object fil
- mysql登录报错:ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
- 解决mysql:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO/YES)
2.下载MySQL5.7版本Linux版
进入MySQL官网:MySQL Download MySQL Community Server
选择5.7.43版本下载:
代码语言:javascript复制Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive
(mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz)
3.复制压缩包到linux服务器进行解压
下载完成后,使用SFTP上传至服务器中(任意一文件夹即可,后续将移动到指定位置)。
然后解压
代码语言:javascript复制tar -zxvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz
4.解压好后把MySQL移动到指定位置并重命名
代码语言:javascript复制mv mysql-5.7.43-linux-glibc2.12-x86_64 /usr/local/mysql
5.创建MySQL用户组和用户并修改权限
代码语言:javascript复制groupadd mysql
useradd -r -g mysql mysql
6.创建数据目录并赋予权限
代码语言:javascript复制mkdir -p /data/mysql
chown mysql:mysql -R /data/mysql
7.配置my.cnf文件
代码语言:javascript复制vim /etc/my.cnf
修改文件内容
代码语言:javascript复制[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
8.初始化数据库
进入MySQL的bin目录下执行
代码语言:javascript复制cd /usr/local/mysql/bin/
代码语言:javascript复制./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
在这里执行初始化的时候会报错,可能会缺少libaio.so.5文件,根据以下代码即可修复这个问题
代码语言:javascript复制apt-get install libncurses5-dev libncurses5 # 适用于Ubuntu系统
此时你再执行初始化数据库会报错,不要慌,那是因为你刚刚执行这个命令的时候在data目录下已经有日志了,先把这个目录下的文件清空,再重新执行即可成功!
9.查看MySQL密码
代码语言:javascript复制cat /data/mysql/mysql.err
执行此命令之后在文件的最后位置会有对应的密码,请一定牢记!!!这个文件只可以访问一次。
代码语言:javascript复制[Note] A temporary password is generated for root@localhost: yourPassword
10.修改启动文件
先将mysql.server放置到/etc/init.d/mysql中
代码语言:javascript复制cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
查看启动项
代码语言:javascript复制cat /etc/my.cnf
找到其中的
代码语言:javascript复制basedir=/usr/local/mysql
datadir=/data/mysql
然后编辑mysql启动文件
代码语言:javascript复制vim /etc/init.d/mysql
将
代码语言:javascript复制basedir=
datadir=
改成
代码语言:javascript复制basedir=/usr/local/mysql
datadir=/data/mysql
然后退出保存即可。
11.启动MySQL
启动mysql服务
代码语言:javascript复制service mysql start
查看mysql启动进程
代码语言:javascript复制ps -ef|grep mysql
12.修改root密码
代码语言:javascript复制./mysql -u root -p #bin目录下执行哦
代码语言:javascript复制root@RainYun-uq34Ijpz:/usr/local/mysql/bin# ./mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
登陆成功之后执行如下操作:
代码语言:javascript复制SET PASSWORD = PASSWORD('123456'); // 设置新的密码
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
此时你的MySQL已经基本配置完成啦~
在这里执行登录MySQL的时候可能会报错,可能会缺少 libaio.so.5 文件,根据以下代码即可修复这个问题:
代码语言:javascript复制apt-get install libncurses5-dev libncurses5 #适用于Ubuntu系统
如果在执行重置密码的时候出现以下错误
代码语言:javascript复制ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
你可以修改配置文件
代码语言:javascript复制vim /etc/my.cnf
在[mysqld]后添加skip-grant-tables(登录时跳过权限检查)
代码语言:javascript复制skip-grant-tables
然后重启MySQL服务即可。
代码语言:javascript复制systemctl restart mysql
如果报
代码语言:javascript复制ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
输入
代码语言:javascript复制flush privileges;
会显示
代码语言:javascript复制Query OK, 0 rows affected (0.01 sec)
输入
代码语言:javascript复制set password for 'root'@'localhost'=password('Admin123@qwe');