这里写自定义目录标题

  • 前言
  • 在ubuntu无root权限下安装mysql
  • 1. 下载并解压 mysql 安装包
  • 2. 编写 my.cnf 配置文件
  • 3. 安装 mysql
  • 4. 启动 mysql
  • 5. 登录 mysql 并修改密码
  • 6. 开启远程访问
  • 参考


前言

在有root权限的情况下,安装mysql是很简单的:

# centos
	yum -y install mysql-community-server
# ubuntu
	sudo apt install mysql-server

但实验室的服务器(ubuntu)通常没有root权限,需要通过源码安装mysql。现有的教程基本上都卡在了缺少libaio这一步。以下是亲测有效的解决方案。

在ubuntu无root权限下安装mysql

1. 下载并解压 mysql 安装包

目录:/home/project/tools 网址:https://downloads.mysql.com/archives/community/

乌班图mysql修改配置文件_bash


选择所需的mysql版本,这里选择的是 mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz,在Download 按钮处右键复制链接即可。

然后在终端运行:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

解压:

tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

把解压后的文件夹重命名为 mysql:

mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql

2. 编写 my.cnf 配置文件

进入 mysql 目录,创建并编写 my.cnf 文件:

cd mysql
vim my.cnf

插入以下内容:

[client]
port=3306
socket=/home/project/tools/mysql/mysql.sock

[mysqld]
port=3306
basedir=/home/project/tools/mysql
datadir=/home/project/tools/mysql/data
pid-file=/home/project/tools/mysql/mysql.pid
socket=/home/project/tools/mysql/mysql.sock
log_error=/home/project/tools/mysql/error.log
server-id=100
# 设置大小写不敏感
lower_case_table_names=1

3. 安装 mysql

进入 bin 目录:

cd bin

运行并修改 mysqld 文件:

./mysqld \ --defaults-file=/home/oper/mysql/my.cnf \ --initialize \ --user=mysql \

此时可能会报错:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

乌班图mysql修改配置文件_乌班图mysql修改配置文件_02


也就是缺少 libaio,这在有 root 权限时很好解决,只需执行 sudo apt-get install libaio1。在没有 root 权限时就需要手动安装并配置。

(1)下载 libaio 安装包

在 mysql 目录下运行以下指令,下载 libaio-0.3.109-13.el7.x86_64.rpm

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm

乌班图mysql修改配置文件_乌班图mysql修改配置文件_03

(2)解压 libaio 安装包
非 root 用户只能用rpm2cpio解压:

rpm2cpio libaio-0.3.109-13.el7.x86_64.rpm |cpio -idvm

乌班图mysql修改配置文件_mysql_04


(3)修改软连接

进入 lib64 目录查看连接情况:

cd lib64
ll

乌班图mysql修改配置文件_ubuntu_05


可见,ibaio.so.1的软链接默认指向 /lib64/libaio.so.1.0.1,需要修改为指向 /home/project/tools/mysql/lib64/libaio.so.1.0.1:

ln -snf /home/project/tools/mysql/lib64/libaio.so.1.0.1 libaio.so.1

再次 ll 查看软连接:

乌班图mysql修改配置文件_mysql_06


(4)修改环境配置

进入用户主目录,新建配置文件 .bash_profile

cd ~
vim .bash_profile

在配置文件中插入以下内容(添加 LD_LIBRARY_PATH、新增一条指向 mysql/bin 的路径):

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
     . ~/.bashrc
fi
# User specific environment and startup programs

PATH=$PATH:$HOME/project/tools/mysql/bin
export LD_LIBRARY_PATH=$HOME/project/tools/mysql/lib64
export PATH=$PATH

执行配置文件:

source .bash_profile

终端输入 env 查看当前的环境变量,发现 LD_LIBRARY_PATH 和 PATH 已修改(PATH 新增了最后一个冒号后面的路径):

乌班图mysql修改配置文件_乌班图mysql修改配置文件_07


乌班图mysql修改配置文件_mysql_08


(5)再次尝试安装 mysql

cd project/tools/mysql/bin
./mysqld \ --defaults-file=/home/oper/mysql/my.cnf \ --initialize \ --user=mysql \

无返回任何结果且无报错,此时 mysql 以安装成功。

4. 启动 mysql

依次执行以下命令,没有报错:

./mysqld_safe --defaults-file=/home/project/tools/mysql/my.cnf --user=mysql &

另起一终端,能监听 3306 端口,表示启动成功:

cd /home/project/tools/mysql
netstat -tln | grep 3306

5. 登录 mysql 并修改密码

查看初始密码,初始密码在 mysql 目录下的 error.log 文件。此处密码为lwen8bwZ8j,c:

乌班图mysql修改配置文件_linux_09

cat error.log | grep root@localhost

登录,输入初始密码:

mysql -u root -p -S /home/project/tools/mysql/mysql.sock

登录成功后,输入以下命令修改密码:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');	--设置登录密码为123456
flush privileges;

6. 开启远程访问

使用第三方工具连接 mysql 数据库时,需要提前开启 mysql 的远程访问限制。
在 mysql 界面中切换至 mysql 数据库,查看用户认证信息:

use mysql
select User,authentication_string,Host from user;

乌班图mysql修改配置文件_bash_10


可见,这里 localhost 的访问权限。

要允许其他地址的主机访问 mysql,就要修改权限。此处密码是123456,实际根据自己的来,% 代表所有主机,也可以具体到 ip 地址:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';	--允许其他主机访问
flush privileges;

再次查表可以发现多了个用户,表示成功开启远程访问,可以使用工具远程连接:

select User,authentication_string,Host from user

乌班图mysql修改配置文件_ubuntu_11


至此,mysql 已安装完成!

参考

  • Linux普通用户安装配置mysql(非root权限)
  • centos 7或ubuntu18.04 无oracle数据库环境下,非root用户安装sqlplus客户端教程
  • Linux下,非root用户安装及配置mysql