Mysql

安装

安装新版的mysql之前,需要先确保卸载旧版,如果存在旧版,可以使用系统对应的包管理器删除。同时还需要记得删除旧版mysql的一些数据文件和附加文件,另外,检查mysql的配置文件/etc/my.cnf /etc/mysql, 如果有,在安装新的mysql之前,也需要先删除它们。

mysql需要libaio的依赖包,所以在安装之前,需要现在系统中安装libaio

# yum
yum search libaio # search for info
yum install libaio # install library

# apt
apt-cache search libaio # search for info
apt-get install libaio1 # install library

如果是在Oracle Linux 8 / Red Hat 8上安装,则需要先安装ncurses-compat-libs
安装命令:yum install ncurses-compat-libs

Step 1: 下载Mysql安装包

通过链接https://dev.mysql.com/downloads/mysql/open in new window寻找适合自己系统的Mysql安装包(这里是用作学习用的,所以我下载是Community版本)。

我的环境是CentOS7(glibc 2.17),所以我下载的tar文件为:mysql-8.0.31-linux-glibc2.17-x86_64-minimal.tar,然后解压该文件。

tar -xvf mysql-8.0.31-linux-glibc2.17-x86_64-minimal.tar

解压后,会得到3个xz文件,我们安装只需要使用mysql-8.0.31-linux-glibc2.17-x86_64-minimal.tar.xz即可。

Step 2: 安装

$> groupadd mysql
$> useradd -r -g mysql -s /bin/false mysql
$> cd /usr/local
$> tar xvf /path/to/mysql-VERSION-OS.tar.xz
$> ln -s full-path-to-mysql-VERSION-OS mysql
$> cd mysql
$> mkdir mysql-files
$> chown mysql:mysql mysql-files
$> chmod 750 mysql-files
$> bin/mysqld --initialize --user=mysql
$> bin/mysql_ssl_rsa_setup
$> bin/mysqld_safe --user=mysql &
# Next command is optional
$> cp support-files/mysql.server /etc/init.d/mysql.server

以上步骤包括了为系统添加mysql的用户和用户组、Mysql初始化,然后通过mysqld_safe --user=mysql启动mysql服务器。

需要注意,在mysql的初始化的时候,系统会默认给root一个初始密码
提示信息如下:A temporary password is generated for root@localhost: 1etke/kfAo:f
注意记录下root的初始密码,后面登录mysql需要用到。

为了方便使用mysql的命令,可以将/usr/local/mysql/bin目录添加到PATH的环境变量中
export PATH=$PATH:/usr/local/mysql/bin

Step 3: 连接

成功启动mysql后,我们可以用root账号和密码(在上一步安装初始化时,系统有提供初始密码),通过mysql命令来连接服务器。

$ mysql -u root -p
Enter password:

输入初始密码后,即可以进入mysql的命令行。

如果这个时候输入命令,会提示修改密码,这是因为我们第一次使用初始密码登录,系统会要求你重新设置密码。

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

我们只需要在命令行中输入下面命令修改密码即可,我这里修改密码为123456

mysql> alter user user() identified by '123456';

密码修改成功后,就可以使用mysql的相关命令进行数据库操作了。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql>

至此,Mysql的安装就完成了。

下面附录列举了安装、初始化中可能会遇到的问题以及解决方案,供大家参考。

异常处理

  • 文件权限问题
[root@localhost mysql]# ./bin/mysqld_safe --user=mysql
[root@localhost mysql]# 2022-10-25T01:59:14.564991Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

解决方案:新建文件 /var/log/mariadb/mariadb.log,并修改用户组权限

chown mysql:mysql /var/log/mariadb/mariadb.log
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决方案:检查下mysql启动后,mysql.sock是不是在/var/lib/mysql/目录下,如果是,则建立一个软连接即可

ln -s /var/lib/mysql/mysql.sock /tmp/
[root@localhost ~]# mysqld_safe --user=mysql
2022-10-25T02:38:32.596168Z mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
2022-10-25T02:38:32.667424Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2022-10-25T02:38:34.687481Z mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid ended

解决方案:查看/var/log/mariadb/mariadb.log日志文件,发现是因为这个文件/var/run/mariadb/mariadb.pid没有权限访问,需要去建立这个文件,并且修改用户/组为mysql:mysql

vi /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
Last Updated:
Contributors: 小5