开始安装mysql
1.从官网网站下载相应版本的MySQL
下载时要注意版本号,我所用的为Cent OS7,所以我选择这个
注:tar.gz:tar.gz就是一个压缩包,类似于win上面的zip等文件
rpm:rpm是一种用来打包软件的的文件格式,他是一种特定的专门用来进行软件的安装、卸载等操作的格式
yum:yum可以理解为一个专门用来管理软件的体系,有点类似于Java中的maven,可以管理软件之间相互依赖的问题,他和前两种的不同之处就是,他的安装不是简单的使用tar和rmp命令行就可完成对某一个软件的安装,而是通过配置yum文件实现对软件的一个自动下载、安装以及缺失依赖的自动过程。
下载完毕,上传至服务器 。
2.检查服务器
检查Linux中是否已安装mysql。
rpm -qa|grep mysql
如果有,就卸载掉
yum -y remove xxxxxxxxxxx
检查Linux中是否存在mariadb(CentOS7中mariadb和mysql有冲突,mariadb数据库是mysql的分支,如果以前安装了要卸载掉,不然安装不成功的)
rpm -qa |grep mariadb
或者
yum list installed|grep mariadb
如果有,就卸载掉
rpm -e --nodeps mariadb -libs (强制卸载,--nodeps忽略依赖)
yum -y remove mariadb-libs.x86_64
3.解压安装包
tar -zxvf xxxxxxxxxx
4.依次安装
rpm -ivh mysql-xxxxxxxx
mysql-community-common
mysql-community-client-plugins
mysql-community-libs
mysql-community-client
mysql-community-icu-data-files
mysql-community-devel
mysql-community-server
5.安装好之后,初始化一下
mysqld --initialize --console
6.安装目录所属者和所属组修改一下,以便msyql用户有权限直接使用
chown -R mysql:mysql /var/lib/mysql/ 递归的方式设置权限
7.启动服务
systemctl start mysqld
或者
service mysql start
8.查看初始化时,生成的临时密码
cat /var/log/mysqld.log |grep localhost
9.登录并修改root密码
mysql -u root -p (登录)
alter user 'root'@'localhost' identified by '你想要修改的密码'; (修改密码)
update user set host ='%' where user='root'; (修改 root 用户的 host 列值,开启远程连接。允许使用 root 用户进行远程连接)
flush privileges; (刷新缓存)
systemctl start mysqld.service (启动mysql服务)
systemctl stop mysqld.service (停止mysql服务)
systemctl restart mysqld.service (重启mysql服务)
systemctl reload mysqld.service (重新加载配置)
systemctl status mysqld.service (查看mysql服务当前状态)
systemctl enable mysqld.service (设置mysql服务开机自启动)
systemctl disable mysqld.service (停止mysql服务开机自启动)
systemctl list-units --type=service (查看所有已启动的服务)
至此,MySQL已经安装完成。
可能出现的问题:
1.通过navicat等远程连接工具连接失败。
Mysql8已经将之前的mysql_native_password认证,修改成了caching_sha2_password认证方式。所以,使用类似于navicat或是sqlyog这些客户端时,默认使用还是mysql_native_password认证方式,所以即使输入正确的用户和密码依然登录不成功。
而且,
mysql8开始,无法给未创建的用户授权。
create user 'root'@'%' identified with mysql_native_password by '123456';
(创建用户,并使用mysql_native_password方式加密)
grant all privileges on *.* to 'root'@'%';
(授予root用户所有权限。all是指所有权限,*是指此用户可以访问所有的库和表)
flush privileges; (刷新权限)
2.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
mysql.sock:连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。
如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。