前言
最近买了一个比较实惠的服务器,在迁移博客的时候发现这次比之前几次还麻烦原因就出现在了Mysql的安装中。在之前的运维部署中我写了一些关于nginx和php的安装唯独没有mysql的导致踩了不少的坑。所以特写本文章记录。本文记录了安装过程中能够所遇到的坑!本文中用CentOS为例其他Linux大同小异
选择合适的MySQL
访问MySQL官网,点击如图的链接可以安装之前的MySQL版本
CentOS选择RedHat
在Linux终端输入uname -a 查看系统架构。根据自己的Linux架构选择合适的版本滑倒最下面找到这一个按Download会跳转到一个页面根据图片所示
安装MySQL
在终端输入如下所示的命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #下载MySQL后面的链接是刚刚复制的 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-el7-x86_64.tar.gz
#解压mysql.tar.gz tar -xzvf mysql-8.0.28-el7-x86_64.tar.gz
#移动到自己想存放的位置这里我存放到/usr/local/mysql mv mysql-8.0.28-el7-x86_64 /usr/local/mysql
#创建一个不允许远程登录的用户用做mysql启动用户,不创建默认使用root可能会有安全问题 #创建一个群组 groupdadd www-data
#创建用户 useradd -g www-data mysql -s /sbin/nologin
#改变mysql目录拥有权 chown -R mysql:www-data /usr/local/mysql
#设置权限 chmod 755 /usr/local/mysql
#创建MySQL数据文件夹 mkdir /usr/local/mysql/data
#初始化数据库,执行之后最后面的是临时密码如下图所示 ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
#复制配置文件 cp my-default.cnf /etc/my.cnf
#修改文件如下图二所示 vim /usr/local/mysql/support-files/mysql.server
#软链接到系统服务中可以直接使用service mysql (startrestartstop)控制mysql服务 ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#软链接到/usr/bin否则如果不在当前目录使用mysql会提示-bash: mysql: command not found ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
#配置开机启动 chmod 755 /etc/init.d/mysql chkconfig --add mysql chkconfig --level 345 mysql on
|
默认密码
配置MySQL
1 2 3 4 5 6 7 8 9 10 11 12
| #登录MySQL,默认root密码为前面步骤中生成的临时密码 mysql -u root -p
#登陆后修改临时密码为test set password = password('test');
#MySQL8.0设置密码 set password='test';
#设置数据库允许远程登录 grant all privileges on *.* to 'root'@'%' identified by 'root';
|
Q&A
1、mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log’, however file don’t exists. Create writable for user ‘mysql’.
1 2 3 4 5 6 7
| mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb
chmod 755 /var/log/mariadb
|
2、 -bash: mysql: command not found
1
| ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
|
3、Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’
1 2 3 4 5 6
| find / -name mysql.sock
结果:/usr/local/mysql/mysql.sock
cp /usr/local/mysql/mysql.sock /tmp/mysql.sock
|