下载地址:https://dev.mysql.com/downloads/mysql/
选择系统版本和系统位数下载就可以了
然后将压缩包上传到服务器上,可以使用Xftp或者其他的工具,安装包很大包含了mysql的测试包,实体,和路由。
打开目录到local下
cd /usr/local
将文件直接上传到这个目录,然后进行解压
tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar
tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
然后就解压出了一个文件夹 ,将他重命名为mysql
mv /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/mysql
接着 在MySQL根目录下新建一个文件夹data,用于存放数据
mkdir data
创建 mysql 用户组和 mysql 用户
groupadd mysql
useradd -g mysql mysql
改变 mysql 目录权限
chown -R mysql.mysql /usr/local/mysql/
接下来 初始化数据库,下面这条命令网上很多都是不对的,本人亲测能用
如果出现目录不存在,查看是否已经更改了目录权限!!!
需要在mysql根目录下执行!!!
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
如果成功了,系统会给你一个临时的密码,务必要记录下来
接下来是mysql的配置
修改my.cnf文件
vim /etc/my.cnf
在mysql目录下新建tmp文件夹 并赋予权限
mkdir tmp
chmod 777 /tmp
修改为以下内容
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /usr/local/mysql/mysql.sock
character-set-server=utf8
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
socket = /usr/local/mysql/mysql.sock
default-character-set=utf8
如不添加 [client] 开启服务输入密码后将出现下列错误
Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)
加入开机自启项:
1.将/support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
2.注册启动服务:
chkconfig --add mysql
查看是否添加成功
chkconfig --list mysql
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
启动mysql服务
# 启动
service mysql start;
# 查看启动状态
service mysql status;
登陆
# 登陆
mysql -uroot -p
# 输入"初始化数据库"操作时的"临时密码"
输入初始化服务时的临时密码;
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
设置允许远程连接
use mysql
update user set host ='%' where user='root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
[root@izbp19kvzy03hpq35bq1jxz ~]# mysql -u root
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
这一段是拒绝user=root,host=localhost 的用户访问,需要数据密码
解决方案:1):设置mysql为无密码启动
(修改MySQL的登录设置:vi /etc/my.cnf (部分Linux安装了vim,其命令则改为vim /etc/my.cnf)
在[mysqld]的段中加上一句:skip-grant-tables保存并退出vi。)
2):重新启动mysqld,清空密码
重启mysql:service mysqld restart(这一步不能少,这是让my.cnf的修改生效)
进入mysql:mysql -u root
进入mysql后,切换数据库至mysql:use mysql;
清空密码:update user set authentication_string=’’ where user=‘root’;
3):退出mysql:exit; 并且 屏蔽skip-grant-tables:vi /etc/my.cnf,在skip-grant-tables前面添加#
4):重启mysql.
至此 mysql8.0 可以不需要密码登录了。登录成功之后重新设置密码和刷新权限 就可以远程访问了
设置密码:
‘root’@’%’ ‘root’等于user表里的user,’%’ 等于user表里的host
ALTER USER ‘root’@’%’ IDENTIFIED BY ‘新密码’ PASSWORD EXPIRE NEVER;
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;
让密码马上生效:FLUSH PRIVILEGES;