sudo apt install libaio1 libaio-dev
sudo useradd -r -s /bin/false mysql
tar -xvf ./mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
sudo mv ./mysql-8.0.17-linux-glibc2.12-x86_64 /usr/local/mysql-8.0.17
cd /usr/local/mysql-8.0.17
sudo mkdir ./data/
sudo chown mysql:mysql ./data/
sudo ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-8.0.17/ --datadir=/usr/local/mysql-8.0.17/data
在终端中找到类似以下的信息,其中 root@local: 后面的便是 mysql 随机初始化的密码,可以先记下来,初次登录的时候要用。
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #gqdJRqYh0l&
sudo vim ./support-files/mysql.server
找到以下几行内容。
# If you change base dir, you must also change datadir. These may get
# overwritten by settings in the MySQL configuration files.
basedir=
datadir=
将其中的 basedir、datadir 改为。
basedir=/usr/local/mysql-8.0.17
datadir=/usr/local/mysql-8.0.17/data
如果你的 mysql 路径为 /usr/local/mysql 以及 /usr/local/mysql/data,就不用改直接下一步。
sudo ./support-files/mysql.server start
2 .把 mysql 服务放进系统进程,这样便可以使用 service 命令管理 mysql 。
sudo cp ./support-files/mysql.server /etc/init.d/mysqld.server
sudo ln -s ./bin/mysql /usr/bin/
mysql -u root -p
填入刚才生成的随机密码,回车执行以下 SQL 语句修改密码
alter user 'root'@'localhost' identified by '新密码';
systemctl 是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。Ubuntu 自带了 systemctl 工具,因此这里使用 systemctl 设置 mysql 自动启动。步骤如下
sudo vim /usr/lib/systemd/system/mysqld.service
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
User=mysql
Group=mysql
PIDFile=/usr/local/mysql-8.0.17/data/demon-PC.pid
ExecStart=/usr/local/mysql-8.0.17/support-files/mysql.server start
ExecStop=/usr/local/mysql-8.0.17/support-files/mysql.server stop
ExecReload=/usr/local/mysql-8.0.17/support-files/mysql.server restart
sudo systemctl enable mysqld.service
根据上面步骤安装 MySQL 成功,但是登录时报以下错误
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
应该是 Ubuntu 20.04 缺少 libtinfo.so.5 这个库的原因。解决方法
安装 libncurses5 库
sudo apt install libncurses5