这里写自定义目录标题
- 前言
- 在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版本,这里选择的是 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
也就是缺少 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
(2)解压 libaio 安装包
非 root 用户只能用rpm2cpio
解压:
rpm2cpio libaio-0.3.109-13.el7.x86_64.rpm |cpio -idvm
(3)修改软连接
进入 lib64 目录查看连接情况:
cd lib64
ll
可见,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 查看软连接:
(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 新增了最后一个冒号后面的路径):
(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:
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;
可见,这里 localhost 的访问权限。
要允许其他地址的主机访问 mysql,就要修改权限。此处密码是123456
,实际根据自己的来,%
代表所有主机,也可以具体到 ip 地址:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'; --允许其他主机访问
flush privileges;
再次查表可以发现多了个用户,表示成功开启远程访问,可以使用工具远程连接:
select User,authentication_string,Host from user
至此,mysql 已安装完成!
参考
- Linux普通用户安装配置mysql(非root权限)
- centos 7或ubuntu18.04 无oracle数据库环境下,非root用户安装sqlplus客户端教程
- Linux下,非root用户安装及配置mysql