上面让自己在服务器上搭个MySQL环境,这我一前端我会啥啊?记录一下方便以后学习,也希望能够帮助一些没有一点Linux基础的,爱自己研究的小伙伴。
因为新开的服务器资源,所以就不需要检查路径下是否有MySQL。如果是重新安装需要先删除原先的MySQL。
rpm -qa | grep mysql #检查是否安装过MySQL,如果什么都没有说明没安装过
rpm -e --nodeps (mysql-5.7.35-linux-glibc2.12-x86_64) #()里为你上一条命令查到的MySQL文件名,执行命令时括号删除
rpm -qa | grep mysql #检查是否删除
上述步骤操作完后没有问题再执行下面两条语句
whereis mysql
find / -name mysql #查询所有Mysql对应的文件夹
正常如果没有下载应该是没有的,因为我事先拷了MySQL文件,所以出现了,按理说不用删除,但是既然碰到了就删除一次(顺便熟悉熟悉Linux命令,我也很长时间没碰过Linux系统了)
我是每执行完一步查询就删除一次,可以查询都执行完再一起执行删除命令:
rm -rf /usr/lib/mysql /usr/share/mysql /etc/selinux/targeted/active/modules/100/mysql
#后面为你有MySQL文件的路径,可以从上面查询的结果得知,每个路径之间用空格分开即可
检查是否有MySQL组和用户是否存在,正常上面步骤执行下来不出错是没有的;再新建MySQL用户组和用户
cat /etc/group | grep mysql #检查是否存在用户组
cat /etc/passwd | grep mysql #检查是否存在用户
groupadd mysql #添加mysql用户组
useradd -r -g mysql mysql #添加mysql用户
下载MySQL(官网下载地址),因为公司服务器不让连外网就直接从本地下载了然后upload到服务器上。
一般选择Linux-Generic即可,服务器是centerOS系统,不知道下Ubuntu的会不会有不兼容性之类的问题。
下载后直接拖进服务的Linux系统里,随便找个自己记得的路径即可。
然后执行:
cd /home/supconit/mysql #切换到你自己的路径下
tar xzvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz #解压缩
ls #查看路径下的文件
没有错误就会像这样
移动文件:
mv mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql #移动文件至/usr/local/mysql
cd /usr/local/mysql #切换到/usr/local/mysql下
ls #查看当前路径下文件
创建data文件夹,更改所属的用户组和用户并赋予权限
这里科普一下chmod后跟的数字的含义:
第一个数字表示文件所有者的权限;
第二个数字表示与文件所有者同属一个用户组的其他用户的权限;
第三个数字表示其它用户组的权限。
mkdir /usr/local/mysql/data #创建data目录
chown -R mysql:mysql /usr/local/mysql #改mysql目录下所有的目录及文件夹所属的用户组和用户
chmod -R 755 /usr/local/mysql #赋予文件所有者可读可写可执行;
#与文件所有者同属一个用户组的其他用户可读可执行;其它用户组可读可执行权限
编译安装并初始化mysql:
cd /usr/local/mysql/bin #切换到bin目录下
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
#编译安装并初始化mysql
安装成功如图,记住最后@localhost: 后的字符串(图马赛克处),为mysql管理员临时登录密码。
执行以下命令,进入my.cnf文件,如下图所示
vi /etc/my.cnf
按i进入编辑模式,添加如下配置
[mysqld]
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1 #表名不区分大小写
完成后按esc退出编辑后,输入:wq 命令保存退出。
再启动MySQL服务器
/usr/local/mysql/support-files/mysql.server start
这里报错了,报错信息:
两个错误查了下资料,第一个是没有/var/log/mariadb/mariadb.log日志文件,添加一下即可,命令:
mkdir /var/log/mariadb #新建/var/log/mariadb目录
touch /var/log/mariadb/mariadb.log #新建mariadb.log文件
chown -R mysql:mysql /var/log/mariadb/ #赋予文件读写权限
第二个错误是因为我的my.cnf文件的datadir路径没改,
原来的是datadir=/var/lib/mysql,socket路径也需要对应修改一下(不知道什么原理)。
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
再执行启动命令就成功啦!如图
添加软链接,并且重启MySQL服务,成功如图所示
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#ln命令是Linux非常重要的命令之一,用法是ln -s 源文件 目标文件,类似于Windows的超链接
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
#想删除软链接 rm -rf /usr/bin/mysql即可,后面路径为目标文件的路径。
service mysql restart #重启mysql服务
成功如图所示
接下来登录MySQL,密码为之前localhost后那串字符。我出现了报错信息如下:
网上说了一些教程,我选了个看起来比较靠谱的,亲测有用——连接文件。
上面报错无非不能通过/tmp/mysql.sock路径下的socket连接MySQL服务器,先找一下你的mysql.sock文件在哪。然后再连接到/tmp/mysql.sock目录下。
find / -name mysql.sock #查找mysql.scok文件
ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
#将查找到的路径链接到/tmp/mysql.sock
链接后重启MySQL服务,再登录MySQL问题就解决啦!
修改密码,别忘了语句最后加分号
set password for root@localhost = password('yourpass');
开放远程连接
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
全部成功执行就像这样。
然后输入下面指令退出mysql命令行。
quit;
设置开机自启动
#将服务文件拷贝到init.d下,并重命名为mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld #赋予可执行权限
chkconfig --add mysqld #添加服务
chkconfig --list #显示服务列表
显示如下界面就完成啦!
补充:可能有很多小伙伴最后在本地数据库工具测试连接的时候报错:can`t connect to mysql server on ‘172.16.2.244’(10038)
问了公司Linux大神,说是服务那边防火墙或一些安全组件的问题
解决:在服务器输入以下命令
systemctl stop firewalld #关闭防火墙
再次进行连接测试,如果还有问题。打开selinux的config文件(大神说这是一个Linux安全组件)
vi /etc/selinux/config
修改selinux的属性,修改成permissive和disabled都可以。