linux安装mysql
前言:linux的mysql 默认的路径是 /usr/local/mysql/
由于本文使用的是/usr/local/soft/mysql/,所以在启动的时候会出现一些找不到路径的问题,需要修改配置文件中的路径,因此建议小伙伴们通过 /usr/local/mysql/来安装mysql
一.安装前准备
1.检查是否已经安装过mysql,执行命令
rpm -qa| grep mysql
2.查询所有mysql对应的文件夹
whereis mysql
find / -name mysql
删除相关目录和文件(xxxx为上面查询出来的目录)
rm -rf xxxx xxxx xxxx
验证是否删除完毕
whereis mysql
find / -name mysql
3.检查mysql用户和用户是否存在,如果没有,则创建
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
groupadd mysql
useradd -g mysql mysql
4.从官网下载用于Linux的Mysql安装包
下载命令:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
也可以直接到mysql官网选择其他版本下载
二、安装mysql
1.创建目录 /usr/local/soft
mkdir /usr/local/soft
cd /usr/local/soft
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
如果遇到 -bash: wget: command not found,说明没安装wegt,,输入以下命令:
yum -y install wget --下载wget指令
执行解压命令:
ls
tar -xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz --解压文件
解压完成后,可以看到当前目录下多了一个解压目录
对解压出来的目录重命名为mysql
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql --重命名为mysql
2.在/usr/local/soft/mysql 目录下建立data 目录
mkdir /usr/local/soft/mysql/data --建立data 目录
3.更改mysql目录下所有目录以及文件夹所属的用户组合用户,以及权限
chown -R mysql:mysql /usr/local/soft/mysql/
chown -R mysql:mysql /usr/local/soft/mysql/data/
chown -R mysql /usr/local/soft/mysql/
chown -R mysql /usr/local/soft/mysql/data/
更改mysql安装文件夹mysql/的权限
chmod -R 755 /usr/local/soft/mysql
如果执行chown -R mysql:mysql /usr/local/soft/mysql报错:chown: invalid user: ‘mysql:mysql’ (chown: ‘mysql.mysql’: 无效的用户)
说明没有创建mysql用户
groupadd mysql --创建mysql组
useradd -g mysql mysql --创建mysql用户添加到mysql组
4.编译安装并初始化mysql ,务必记住初始化输出日志末尾的密码(数据库管理员临时密码),并且注意datadir=/usr/local/soft/mysql/data等号不能有空格
cd /usr/local/soft/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/soft/mysql/data --basedir=/usr/local/soft/mysql
补充说明:
此时可能会出现错误 :
出现该问题首先检查该链接库文件有没有安装使用 命令进行核查,运行命令后发现系统中无该链接库文件
rpm -qa|grep libaio --如果没有则执行下面的命令
yum install libaio-devel.x86_64
安装成功后,继续运行数据库的初始化命令
5、运行初始化命令成功后,输出日志如下:
记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码。(7&8PyOsELLYD)
6.编辑配置文件my.cnf ,添加/修改配置如下(黄色字体以及对应的内容)
找到my.cnf文件:
find / -name my.cnf
编辑my.cnf文件:
vim /etc/my.cnf
[mysqld]
datadir=/usr/local/soft/mysql/data
socket=/usr/local/soft/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
7、启动mysql服务器
/usr/local/soft/mysql/support-files/mysql.server start
会报错,报错内容如下图所示:
报错原因是默认的启动路径是/usr/local/mysql/ :
修改mysql配置文件:
vi /usr/local/soft/mysql/support-files/mysql.server
修改前:
# Set some defaults
mysqld_pid_file_path=
if test -z "$basedir"
then
basedir=/usr/local/mysql
bindir=/usr/local/mysql/bin
if test -z "$datadir"
then
datadir=/usr/local/mysql/data
fi
sbindir=/usr/local/mysql/bin
libexecdir=/usr/local/mysql/bin
else
bindir="$basedir/bin"
if test -z "$datadir"
then
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
libexecdir="$basedir/libexec"
fi
修改后:
mysqld_pid_file_path=
if test -z "$basedir"
then
basedir=/usr/local/soft/mysql/
bindir=/usr/local/soft/mysql/bin
if test -z "$datadir"
then
datadir=/usr/local/soft/mysql/data
fi
sbindir=/usr/local/soft/mysql/bin
libexecdir=/usr/local/soft/mysql/bin
else
bindir="$basedir/bin"
if test -z "$datadir"
then
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
libexecdir="$basedir/libexec"
fi
:wq 保存退出!
cp /usr/local/soft/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
/etc/init.d/mysqld start
再报错:启动mysql报错mysqld_safe error: log-error set to /var/log/mariadb/mariadb.log
因为没有路径也没有权限,所以创建此路径并授权给mysql用户
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
# 用户组及用户
chown -R mysql:mysql /var/log/mariadb/
# 再执行启动命令
如果还报错:因为新版本的mysql启动,默认是/usr/local/mysql
修改mysqld_safe
find / -name mysqld_safe
cat /usr/local/soft/mysql/bin/mysqld_safe |grep /usr/local/mysql
vi /usr/local/soft/mysql/bin/mysqld_safe
vim命令:%s#/usr/local/mysql#/usr/local/soft/mysql#g
(解释:将/usr/local/soft/mysql区别替换为/usr/local/soft/mysql
–使用#代替/ --g代表全局
)
启动成功:
8、添加软连接,并重启mysql服务
ln -s /usr/local/soft/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/soft/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/soft/mysql/mysql.sock /tmp/mysql.sock
service mysql restart
mysql -uroot -p
(输入之前保存的管理员临时密码)
9、登录mysql,修改密码(密码为步骤5生成的临时密码)
mysql>set password=password(‘root’);
10、开放远程连接
mysql>use mysql;
msyql>update user set user.Host=’%’ where user.User=‘root’;
mysql>flush privileges;
mysql> quit
mysql -uroot -proot
11、设置开机自动启动
1、将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/soft/mysql/support-files/mysql.server /etc/init.d/mysqld
2、赋予可执行权限
chmod +x /etc/init.d/mysqld
3、添加服务
chkconfig --add mysqld
4、显示服务列表
chkconfig --list
12、navicat 连接mysql
步骤是:
1.关掉防火墙
systemctl stop firewalld
2.设置mysql用户的远程访问
如果还报错,可以看下面的解决方法:
Navicat新建连接出现10060 “Unknown error” 错误
直接上图,提醒是这个错误
解决步骤:
1.检查网络通不通
ping 本地网络、ping 本机网卡链路、ping 网关、ping 外网
2.检查防火墙firewalld
systemctl status firewalld
发现是开启的,把它关闭,因为有时候服务器防火墙会错把3306端口通过的信息给拦住了,再查询防火墙状态发现已经关闭了
systemctl stop firewalld
systemctl status friewalld
3.检查3306端口是否开启,一般情况下开启服务器这个端口都默认打开的
netstat -an|grep 3306
4.检查远程用户权限
查看用户信息及权限,发现没有用户拥有远程登录的全部权限%
use mysql;
select user,host from mysql.user;
需要创建一个用户test密码为123456,让它可以在任何主机上登录并拥有所有权限,并刷新权限
grant 权限 on 数据库.数据表 to 用户名@‘登录主机’ indentified by ‘登录密码’
刷新权限 flush privileges
添加成功
连接测试,成功