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/寻找适合自己系统的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/