我现在在用的是Manjaro, 其实可以通过pacman自动安装mysql, 但是pacman会安装最新版的mysql, 在2019年7月1日的今天是8.0.16, 那为什么不直接使用这个版本反而自找麻烦去手动安装5.5的mysql呢?主要是基于3点考虑:
接下来就是写这篇文章的初衷了, 按说网络上多的是在Linux上安装mysql的文章, 可是我起码找了有十几篇文章, 按照里面的方法一个个试下来都无法安装成功, 没得办法就想到去官网啃英文文档, 按照里面的步骤果然成功安装, 所以就参考官方把安装和启动步骤写下来以备不时之需.
shell> cd ~/downloads
shell> wget https://downloads.mysql.com/archives/get/file/mysql-5.5.55-linux2.6-i686.tar.gz
其他版本可以进入以下网址下载:
https://downloads.mysql.com/archives/community/
shell> tar -xzvf mysql-5.5.55-linux2.6-i686.tar.gz //解包
shell> sudo mv mysql-5.5.55-linux2.6-x86_64 /opt //一般的约定opt目录用于安装第三方应用
shell> sudo groupadd mysql //创建数据库用户组
shell> sudo useradd -r -g mysql mysql //创建数据库用户
shell> cd /opt/mysql //进入到mysql目录下
shell> sudo chown -R mysql . //变更mysql目录的所属用户
shell> sudo chgrp -R mysql . //变更mysql目录的所属用户组
shell> sudo scripts/mysql_install_db --user=mysql //通过自带安装脚本安装mysql(目前试过只有这种方法才能安装成功)
shell> sudo chown -R root . //收回mysql目录的所有权
shell> sudo chown -R mysql data //因为使用mysql过程中需要访问data目录,所以需要保留该目录的所有权
ps. 上面第一步有可能遇到找不到libaio.so.1这个错误,可以通过apt安装libaio-dev解决
ps. mysql5.7版以前不能用mysqld --initialize初始化
shell> sudo vim support-files/my-huge.cnf //大型数据库的配置文件,下面设置开机启动要用到
把socket值改为:socket= /var/run/mysqld/mysql.sock
shell> sudo cp support-files/my-huge.cnf /etc/my.cnf
shell> sudo bin/mysqld_safe --user=mysql & //官方推荐的安全启动模式
shell> sudo bin/mysqld --user=mysql //普通启动模式
shell> sudo support-files/mysql.service start //通过服务启动
shell> sudo support-files/mysql.service stop //目前尝试过只有这种方法好用
[mysqld]
basedir=/opt/mysql
datadir=/opt/mysql/data
sudo vim /etc/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=syslog.target
After=network.target
[Service]
Type=simple
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/run/mysqld
ExecStartPre=/bin/chown mysql:mysql -R /var/run/mysqld
ExecStart=/opt/mysql/bin/mysqld --basedir=/opt/mysql/ --datadir=/opt/mysql/data --plugin-dir=/opt/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
TimeoutSec=300
PrivateTmp=true
User=mysql
Group=mysql
WorkingDirectory=/opt/mysql
[Install]
WantedBy=multi-user.target
shell> systemctl enable mysql.service
echo 'export MYSQL_HOME=/opt/mysql' >>/etc/profile
echo 'export PATH=\$PATH:\$MYSQL_HOME/bin' >>/etc/profile
mysql -uroot
use mysql;
update user set password = password('root') where user = 'root';
or
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'