我用的镜像是centos7。
1.mysql的下载安装包
首先从mysql官网上https://www.mysql.com/
点击downloads,进入后往下滑找到如图,进入,
进入后点击mysql社区版的 MySQL Community server,点击进入,第一步,选择的linux系统,我的是centos7,属于小红帽的所以我选的是red hat的。第二步,镜像是哪个版本的我的是7x86_64版的。第三步点击RPM Bundle 下载就可以了,第一个离线包很全面。
本次安装的是离线版的,也有在线安装的(未学习)。
mysql的安装
首先把包放到opt文件夹下(我是通过xftp传输的)
common client-plugins libs client (可能需要这个 包icu-data-files,如果是8.0.28往后的) server
1.检查 /tmp临时目录权限,
原因:由于mysql安装过程中,会通过mysql用户在 /tmp目录下新建tmo_db文件,所以需要给tmp较大的权限。执行:命令 :
chmod -R 777 /tmp
2.检查依赖 没有就安装
rpm -qa|grep libaio
rpm -qa|grep net-tools
在安装时要在opt文件夹下安装因为包都在opt文件夹下
3.安装(要按顺序安装 common client-plugins libs client server)
rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
注意在安装 libs包时,会报错:mariadb-libs 被....取代
要执行 yum remove mysql-libs 清除之前安装的依赖
在8.0.28左右之后要安装server包时需要提前 icu-data-files的rpm包。才可以。或者在rpm 语句后面加上 --nodeps --force,安装时忽略依赖关系.
安装完后检查是否成功执行:mysql --version 或 mysqladmin --version
执行如下命令,查看是否安装成功 -i 忽略大小写
rpm -qa|grep -i mysql
rpm -qa|grep -i mysql
4. 服务初始化 : 为保证数据库目录与文件的所有者为mysql登录用户,如果你是root 身份运行mysql服务,需要执行下面名命令初始化
mysqld --initialize --user=mysql
mysqld --initialize --user=mysql
--initialize 默认以“安全”模式初始化,则会为root用户生成一个密码并将该密码标记为过期,登录后你需要设置一个新密码。生成的历史密码会往日志中记录一份。
查看密码:
cat /var/log/mysqld.log
root@localhost:后面就是初始化的密码
5.启动mysql ,查看mysql是否启动了。
systemctl status mysqld.service (.service 加不加都可以)
没有启动的话用命令启动
systemctl start mysqld
systemctl stop mysqld 停止运行命令
执行成功后在查看一下状态
systemctl status mysqld
查看进程
ps -ef | grep -i mysql
6.查看MySQL服务是否自动启动
systemctl list-unit-files|grep mysqld.service
默认是enabled
如果不是可以运行如下命令设置自启动
systemctl enable mysqld.service
如果希望不进行自启动运行如下命令
systemctl disable mysqld.service
7.利用临时密码登录进mysql
mysql -uroot -p 回车输入临时密码
进入后要先修改密码
命令是
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
5.7(不含5.7版本)后mysql加入了全新的密码安全机制。设置密码太简单会报错,要设置更复杂的密码才行(有的需要有的不需要)
至于为什么是root@localhost,临时密码哪里你可以找到
改完之后
quit 命令退出mysql 从新用新密码登录。
远程访问连接mysql服务器
- 先检查一下远端电脑能否ping IP地址,保证网路畅通
在检查远程电脑使用telnet命令保证端口开发访问
telnet ip地址 端口号
关于开启telent命令,打开控制面板,点击程序,点击‘启用或关闭windows功能’找到telnet客户端(telnet client)勾选并确定,安装后在用cmd终端上telnet ip:端口号。
若连接失败。那就是mysql服务器防火墙的问题。大多数都是防火墙的问题,上面的是测试环节。
两个方法
第一个关闭直接关闭防火墙,远端和mysql服务器端的。方法1
第二个开启防火墙,允许开放某个端口。 方法2
方法1
Mysql服务器
查看防火墙命令 systemctl status firewalld
关闭防火墙的命令 systemctl stop firewalld
开启防火墙的命令 systemctl start firewalld.service
重启防火墙命令 firewall-cmd --reload
自动关闭防火请 systemctl disable firewalld
自动开启防火请 systemctl enable firewalld
方法2
查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=3306/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
Firewall关闭常见端口命令
firewall-cmd --zone=public --remove-port=80/tcp --permanent重启防火墙
firewall-cmd --reload
在linux下修改配置
登录mysql后使用命令
Use mysql;
Select Host,User from user;
Root用户不允许远程连接;
只能通过修改root用户权限:命令
Update user set host = ‘%’ where user = ‘root’;
Update user set host = ‘192.168.1.%’ where user = ‘root’;
注意:%任意的意思,host = ‘%’表示任何客户端地址都可以访问,
host = ‘192.168.1.%’表示地址192.168.1.1~254都可以访问。
修改后要刷新一下权限:命令
Flush privileges;
注意执行mysql命令要加分号(;)英文版的;
上面完成后,这是再连接会出现新问题(这是8.0版之后才有的问题);Navicat for MySQl的(常规)选项连接中好像不会出现这个错误。可以直接连接。选SSH连接就不行。
解决办法:linux下mysql -uroot -p登录数据 库,执行sql命令
Alter user ‘root’@’%’ IDENTIFIED WITH mysql_native_password by ‘密码’;
再次连接。
注意:
Navicat for MySQl的(常规)选项连接中好像不会出现这个错误。可以直接连接。选SSH连接就不行。
用 ‘常规’选项连接时,你连接的是远程数据库。密码也是数据库密码。
用 ‘SSH’选项连接时,你连接的是远程服务器(linux或Windows)。账号是登录账号;密码是登录账户密码。
附录:
查看数据库字符集命令
Show variables like ‘%character%’;
修改字符集(Windows版)
my.ini文件
修改字符集(linux版)
打开文件 命令: Vim /etc/my.cnf
添加配置项
Character_set_server=utf8
保存退出。重启mysql服务
Systemctl restart mysqld.Service