linux下普通用户安装MySQL以及处理常见问题(以阿里云服务为主)
前言
-
本篇文章以阿里云服务为主安装的,以腾讯云服务安装的可以参考下面的文章
1. 下载安装包
- 自己去官网下载自己所需要的版本即可
官网地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads.
- 点击下载,复制下链接,用 wget 命令下载
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
- 但是这个下载有点慢,文件比较大,所以你可以选择先下载到本地,然后再上传到服务器上
2.安装前检查是否自带安装 MySQL:
rpm -qa | grep mysql
- 如果有,卸载即可
rpm -e mysqlXXX // 普通删除模式
rpm -e --nodeps mysqlXXX // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
- 然后再检查否存在
mariadb
数据库,如果有,同样卸载即可
rpm -qa | grep mariadb
我这里是存在的,网上好多都是让卸载的,我是用普通用户安装的,我们不妨试试不卸载就安装,有问题再搞呗,所以选择不卸载 mariadb
安装。
2. 解压安装包
- 我习惯解压各种安装包的时候指定解压路径,个人看着舒服,这个看你习惯了
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C ../install/mysql/
- 进入解压后的目录查看
3. 添加环境变量path设置(可不设置看个人)
(1)vim ~/.bashrc
- 在文件的末尾添加:
export MYSQL_HOME=/home/susu/soft/install/mysql/mysql-5.7.36-linux-glibc2.12-x86_64
- 或者进家目录下修改
(2) source ~/.bashrc
修改 .bashrc
文件后,记得 source ~/.bashrc
(3)再次访问解压路径
直接用:cd $MYSQL_HOME
(4)修改解压后的文件名
- 文件名太长,看着难受还是修改一下吧,当然看你自己喜欢,不想修改就忍着,修改完后上述3步骤记得重新改,为了避免这种情况发生,你也可以解压前就修改掉
mv mysql-5.7.36-linux-glibc2.12-x86_64 ./mysql-5.7.36
4. 创建用户组和用户
(1)创建mysql用户组
- 查看是否已有该用户组,有不用创建:
cat /etc/group | grep mysql
- 没有则创建:
groupadd mysql
(2)添加用户mysql 到用户组mysql
useradd -g mysql mysql
,添加后设置密码:passwd mysql
(3)添加其他用户到用户组mysql
- 给已有用户添加附加组:
usermod -a -G 附加组名 用户名
(eg:usermod -a -G mysql susu
)
(4)添加后查看用户所属组以及查看组下的用户
这里我是用 susu 用户安装的,所以把此用户添加到了mysql用户组
- 查看该用户所在组:
groups 组名
(eg:groups mysql
)或者:id 用户
(eg:id susu
) - 查看某组下的用户:
cat /etc/group | grep mysql
(5)更改文件所属组和所有者
chown
命令(用于更改文件的所有者)
1.格式:chown -R 用户名 文件名
2.格式:chown -R 用户名.组名 文件名 (将所有者和所属组都更改了)eg:chown -R mysql.mysql 文件名
- 我上面已经将用户susu添加到用户组mysql,所以在这里只改所属组,用命令
chgrp
(用于更改文件或者目录的所属组)
格式:chgrp 【组名】 【文件名】
备注:chgrp -R (可以级联更改子目录及子文件)
chgrp -R mysql mysql-5.7.36
sudo chgrp -R mysql mysql-5.7.36
5. 创建自定义配置文件
(1)创建 data 目录
- 进解压后的目录,
mkdir data
(2)修改解压后的文件名
- 文件名太长,看着难受还是修改一下吧,当然看个人
mv mysql-5.7.36-linux-glibc2.12-x86_64 ./mysql-5.7.36
(3)创建一个my.cnf文件
- 同样在此目录下再创建my.cnf文件,
vim ./my.cnf
在my.cnf中输入下段代码:
[mysqld]
# 这步是为了跳过root的密码验证,如果是你个人使用的话,其实不用密码更方便
skip-name-resolve
skip-grant-tables
#设置3306端口
port = 3306
#这个不需要自己创建,把路径指定好就行
socket=/home/susu/soft/install/mysql/mysql-5.7.36/mysql.sock
# 设置mysql的安装目录,我用的是刚才bashrc里设置的MYSQL_HOME
# 特别注意,不要直接写$MYSQL_HOME,要打完整的路径,不然mysqld启动时会有奇怪的错误
basedir=/home/susu/soft/install/mysql/mysql-5.7.36
# 设置mysql数据库的数据的存放目录, 这里就是刚才我们创建的data目录的路径
datadir=/home/susu/soft/install/mysql/mysql-5.7.36/data
log-error=/home/susu/soft/install/mysql/mysql-5.7.36/log/mysql.log
pid-file=/home/susu/soft/install/mysql/mysql-5.7.36/mysql.pid
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#lower_case_table_name=1
max_allowed_packet=16M
#plugin所在目录 这步很重要,这个得手动指定,不然会报错。该目录不需要手动创建,在$MYSQL_HOME/lib下面有
plugin_dir=/home/susu/soft/install/mysql/mysql-5.7.36/lib/plugin
6. 启动mysql服务以及创建数据库
(1)初始化mysqld(不用也行)
- 进入安装目录:cd /home/susu/soft/install/mysql/mysql-5.7.36
- 执行命令:
./bin/mysqld --initialize --user=susu --basedir=$MYSQL_HOME/ --datadir=$MYSQL_HOME/data/
- 也可以在任何目录下执行(前提是:先配置$MYSQL_HOME环境变量):
$MYSQL_HOME/bin/mysqld --initialize --user=susu --basedir=$MYSQL_HOME/ --datadir=$MYSQL_HOME/data/
(2)初始化之后,进日志目录,查看日志找临时密码
- 这个密码需要的话查看,不需要的话可以不用管
(3)mysql的几种启动方式
1)mysqld启动
a. mysqld启动关闭命令
- 启动命令(指定 my.cnf 文件,注意是 mysqld ):
$MYSQL_HOME/bin/mysqld --defaults-file=$MYSQL_HOME/my.cnf --user=susu
- 启动之后查看进程:
ps -ef | grep mysql
- server关闭,把mysqld的进程kill掉就好了kill -9 PID
b. mysqld启动之后进行客户端连接
连接的时候不指定配置文件可以,用命令:
$MYSQL_HOME/bin/mysql --defaults-file=$MYSQL_HOME/my.cnf
或者 $MYSQL_HOME/bin/mysql
都可以
注意:如果没有配置环境变量,注意路径:./bin//mysql
- 可能出现的问题:
- 如果出现上述这种情况,这是因为我们的my.cnf配置文件里把跳过密码注释掉了,放开即可
- 杀了mysqld进程,重新启动,重新连接即可:
c. 用可视化工具navicat连接测试
- 因为我们配置的不需要验证密码,所以直接空着就行
- 连上之后就可以创建数据库以及表了
- 我们也可以在shell命令里查看数据
mysql查看数据库的命令:SHOW DATABASES;
可以看到我们刚建的数据库liususu,查表
select * from liususu.student;
d. 另外,可配置短命令进入mysql命令模式
我们也可以配置短命令进入mysql命令模式:
alias mysql=/home/susu/soft/install/mysql/mysql-5.7.36/bin/mysql
2)mysqld_safe启动
a. 启动命令等
- 先杀了mysql相关的所有进程
- 然后执行下面命令启动(免密登录,可修改用户密码):
$MYSQL_HOME/bin/mysqld_safe --skip-grant-tables &
- 使用命令
$MYSQL_HOME/bin/mysql
连接客户端
- 接下来如何使用就和上面的一样的
b. 说一下修改mysql中root用户的密码
3)mysql.server启动
- 只需将安装目录下的文件 mysql.server 拷贝到 /etc/init.d/即可:
cp -v /home/susu/soft/install/mysql/mysql-5.7.36/support-files/mysql.server /etc/init.d/
- 启动直接命令:
service mysql.server start
,其他参数需要的时候可用:service mysql.server {start|stop|restart|reload|force-reload|status}
- 可将mysql服务加入chkconfig管理(不是必须,了解即可)
chkconfig --add mysql.server
想了解,可参考:Chkconfig 作用与原理小结.
4)更改启动方式为 service mysqld start
- 为了简单可将第一种mysqld启动更改启动方式为
service mysqld start
,自己想弄的可以尝试一下,在此不做介绍了
(4)遇到的相关问题
1)libaio 缺少,如图保存报错
- 解决:登录root用户安装即可:
yum install libaio
2)其他
- 待大家常见问题补充!