源码包下载:
https://dev.mysql.com/downloads/mysql/
选择SourceCode翻到下面的tar.gz包下载即可
放一张网图,Mysql源码安装的最佳路径:
先把源码包放在/usr/local下,解压出来再改个名
1 2
| tar -zxvf mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql
|
新建mysql用户组、mysql用户
1 2
| sudo groupadd mysql sudo useradd mysql -g mysql
|
授权。以下文件夹没有就创建一个
1 2 3 4
| sudo chown -R mysql:mysql /usr/local/mysql sudo chown -R mysql:mysql /usr/local/mysql/data sudo chown -R mysql:mysql /var/lib/mysql/ sudo chown -R mysql:mysql /var/run/mysqld
|
配置数据库相关的路径信息,初始化数据库。
初始化时会打印一堆东西。有的人初始化时会打印出默认密码,但是这次我却没看到……不太清楚是什么原因
另外初始化必须用sudo去执行,否则会报权限不够或者奇怪的错误
注:这一步使用mysql_install_db安装,需要用到libaio1, libaio是Linux下的一个异步非阻塞方式读写文件的接口,缺少是无法继续安装的
libaio下载地址
1
| https://debian.pkgs.org/11/debian-main-amd64/libaio1_0.3.112-9_amd64.deb.html
|
安装libaio
1
| sudo dpkg -i libaio1_0.3.112-9_amd64.deb
|
查看一下安装是否完成
1 2 3
| whereis libaio.so.1
libaio.so: /usr/lib/x86_64-linux-gnu/libaio.so.1
|
然后就可以继续初始化数据库了
1
| sudo /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
|
然后去配置my.cnf。默认是没有的,需要从源码包里复制一份默认的配置文件到/etc下
1
| cd /usr/local/mysql/ && cp support-files/my-default.cnf /etc/my.cnf
|
默认的my.cnf下文件一堆注释,最后接了两句 !开头的语句,不太清楚是做什么用的,我尝试过几个版本的cnf文件,最后用了以下文件即可。
注意这里的关闭dns解析,内网环境下可以用这个。具体分析请左拐:原因
1 2 3 4 5 6 7 8 9 10 11
| [mysqld] character-set-server = utf8mb4 #关闭dns解析(注意:这会造成只能使用ip远程连接MySQL) #skip-name-resolve skip-grant-tables
[client] default-character-set = utf8mb4
[mysql] default-character-set = utf8mb4
|
OK,然后就可以启动了,先把Mysql加入服务中
1
| cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
|
然后启动Mysql:
1
| sudo service mysql start
|
或者
1
| sudo /usr/local/mysql/support-files/mysql.server start
|
设置密码。这里可能会出现一些警告,这是因为直接明文设置了密码,不用担心实际上已经是设置好了的
1
| /usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
|
直接进入mysql,输入密码即可进入
问题s:
初始化数据库时需要使用到libaio1这个包,但是原生的Ubuntu并不会有这个包,如果需要离线安装还需要rpm工具,但rpm也是需要安装的……因此此次安装并不算真实离线