第一步
①建立一个mysql的组
1 | groupadd mysql |
②建立mysql用户,并放到mysql组
1 | useradd -r -g mysql mysql |
③给mysql用户设置密码
1 | passwd mysql |
第二步
①下载安装包
1 | wget https://downloads.mysql.com/archives/get/file/mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz |
②解压
1 | tar xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz # 解压到/usr/local/下 |
③改名
1 | mv mysql-8.0.17-linux-glibc2.12-x86_64 mysql # 改名 |
第三步
①将mysql
目录中的support-files
中的my_default.cnf
拷贝到/etc/my.cnf
1 | cp my_default.cnf /etc/my.cnf # 覆盖文件 |
若在support-files
中没有my_default.cnf
文件,则自己创建,具体内容如下
1 | [mysqld] |
②复制mysql.server
到 /etc/init.d/
下
1 | cp mysql.server /etc/init.d/mysql |
③修改 /etc/init.d/mysql
参数,给予2个目录位置
1 | vi /etc/init.d/mysql |
更改的内容
1 | basedir=/usr/local/mysql |
④ 给目录/usr/local/mysql
更改拥有者
chown -R 用户名:组名 /usr/local/mysql/
1 | chown -R mysql:mysql /usr/local/mysql/ |
第四步
初始化MySQL
并配置软链接
①初始化MySQL
进入到mysql的bin目录下
1 | ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
此时在MySQL
目录中生成一个data
目录,说明初始化已将完成
!!!——>这里会生成一个临时密码(保存记住,后面要用到)<——!!!
②给数据库加密
1 | ./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data |
③启动MySQL
1 | ./mysqld_safe --user=mysql & # &符号:把当前进程丢给后台 |
④运行MySQL
1 | ./mysql -uroot -p |
输入你的临时密码就可以进入
跳过登录
一、
或者你可以选择跳过登录,具体步骤如下
在
/etc/my.cnf
文件中添加免密登录Code1
skip-grant-tables
一般情况下修改配置文件都需要重启服务
Code1
sudo service mysql restart
运行
MySQL
不用输入密码就可以进入数据库了
⑤修改密码
1 | set password=password('你的密码'); |
⑥配软连接
1 | ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql |
二、如果上面修改密码不行,请使用下面命令
MySQL5
的密码在 /var/log/mysqld.log
中
1、同样在my_cnf
中加入 skip-grant-tables
2、重启MySQL
1 | sudo service mysql restart |
3、给root用户重置密码
①进入MySQL
1 | mysql |
②查看当前root用户相关信息,在mysql数据库的user表中
1 | select host, user, authentication_string, plugin from user; |
host
: 允许用户登录的ip‘位置’%表示可以远程;
user
:当前数据库的用户名;
authentication_string
: 用户密码;在mysql 5.7.9以后废弃了password字段和password()函数;
plugin
: 密码加密方式;
先将authentication_string
字段设置为空
1 | update user set authentication_string='' where user='root'; |
③退出mysql, 删除/etc/my.cnf
文件最后的 skip-grant-tables
重启MySQL
服务
④使用root用户进行登录
因为上面设置了authentication_string为空,所以可以免密码登录
1 | mysql -u root -p |
⑤修改root
用户的密码
1 | ALTER user 'root'@'localhost' IDENTIFIED BY 'password'; |
至此修改成功,从新使用用户名密码登录即可;
第五步
你要想访问你的远程MySQL,就要完成以下几步,不需要的话略过!
①关闭服务器防火墙
1 | systemctl stop firewalld |
②进入mysql中,选中mysql库,修改用户的host为%(匹配所有ip)。比如修改root用户:
1 | use mysql; |
③刷新权限
1 | flush privileges; |
此时会有一个问题,可视化工具或一部分用户无法连接,因为加密方式不一样,修改加密方式
①
1 | ALTER USER 'root'@'%' IDENTIFIED BY 'mysql' PASSWORD EXPIRE NEVER; |
②
1 | ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql'; |
③
1 | flush privileges; |
第六步
配置开机启动
我这里用的是chkconfig
①添加服务mysql
1 | chkconfig --add mysql |
②设置服务开机自启
1 | chkconfig mysql on |
③进行查看启动状态
1 | chkconfig --list |
如果 mysql 的2,3,4,5都是on
的话,说明成功
如果想要重启MySQL服务话输入如下命令,因为我这里用的是chkconfig
,要重启的话是
1 | reboot |
会使云服务器重启;所以我这里用的是
1 | sudo service mysql restart |
因为我这里用的是阿里云服务器,所以要去云服务器控制台
登录阿里云——>控制台——>云服务器ECS——>实例——>安全组——>添加安全规则
规则方向 | 授权策略 | 协议类型 | 优先级 | 授权类型 | 授权对象 |
---|---|---|---|---|---|
入方向 | 允许 | 全部 | 1 | IPv4地址段访问 | 0.0.0.0/0 |
到这一步应该就完成了!远程访问就可以了!
如果还是不能远程访问的话(指的是上面的步骤没有报错);
检查问题
①进入到服务器的MySQL
,使用mysql
库,查看user
表中host
、``user、
authentication_string、
plugin`字段是否与下面我字段一致
1 | use mysql; |
查取user
表中以下字段是否正确
host | user | authentication_string | plugin |
---|---|---|---|
% | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA | mysql_native_password |
localhost | mysql.infoschema | $ A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
如果有的话继续下一步,没有的修改;
②Mysql的端口是否正确
1 | netstat -ntlp # 查看服务器已将运行的端口 运行后是一个列表 查看MySQL的端口3306是否存在 存在继续 |
③查看my.cnf
配置以下内容是否修改,没有修改的修改;
1 | bind-address=0.0.0.0 # 这个可以注释 或 改为0.0.0.0 |
④授权:赋予任何主机上以root身份访问数据的权限
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; |
刷新权限
1 | FLUSH PRIVILEGES; |
就可以了
下面说一下Win10CMD
命令远程访问数据库
1 | mysql -uroot -p # 正常的访问本机的MySQL |
之后输入密码就可以连接;以上就是我在云服务器上部署MySQL所遇到的问题,希望能够帮助到你!