[TOC]
1 下载mysql安装包(免费社区版)
2 安装
2.1 解压
cd /home/mhp/files
tar -xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
2.2 移动到相应目录
mv /home/mhp/files/mysql-8.0.18-linux-glibc2.12-x86_64 /usr/local
2.3 重命名
cd /usr/local
mv ./mysql-8.0.18-linux-glibc2.12-x86_64 mysql
2.4 创建数据文件夹
cd /usr/local/mysql
mkdir data
2.5 创建用户及用户组
用户组:
groupadd mysql
用户:
useradd -g mysql mysql
2.6 授权
此步骤十分重要 网上好多其他教程都是授权到data文件夹,导致无法启动
chown -R mysql.mysql /usr/local/mysql
2.7 配置文件
在mysql 8.0开始,忽略表名大小写的配置在数据库初始化后无法更改了,所以要提前增加配置
vim /etc/my.cnf
在my.cnf中增加以下配置
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
server-id = 1
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
bind-address = 0.0.0.0 # 表示允许任何主机登陆MySQL
port=3306 # 表示MySQL运行端口为3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1
log-error = /usr/local/mysql/data/error.log #添加
tmpdir = /var/tmp #不建议放在/tmp下
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
[mysqld_safe]
log-error=/var/log/mysqld.log
max_allowed_packet=20M
2.8 初始化mysql
cd /usr/local/mysql
./bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
此时会生成一个临时密码,一定要牢记,下一步修改密码是会用到
如果没有生成信息,那么需要到cat /usr/local/mysql/data/error.log
中寻找临时密码
如果报错
./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
yum 安装的libnuma.so.1,但安装时默认安装的是32的,或没有安装但需要的是64位的
1.如果已经安装了libnuma.so.1,先yum remove libnuma.so.1
2.yum -y install numactl.x86_64
2.9 启动mysql服务
通过service mysql start启动
查找mysql.server服务路径 find / -name "mysql.server"
用找到的地址$path执行 cp $path /etc/init.d/mysql
启动 service mysql start
2.10 修改密码
- 登录
mysql -uroot -p
- 输入上面步骤的临时密码
-
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
2.11 解决无法远程登录
查找原因:
登录
mysql -uroot -p
use mysql;
-
查看root用户host:
select host from user where user='root';
发现只能通过localhost登录,需要改成任意地址%
update user set host = '%' where user ='root';
刷新配置
flush privileges;
-
如果出现下面的连接错误信息
修改加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
更新密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';