参考文章:http://www.cnblogs.com/coderls/p/6848873.html
系统:centos 7.6 64位系统
mysql:mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz 下载地址:https://dev.mysql.com/downloads/mysql/
注意:后面尝试安装mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz最新版,发现建表时int、bigint类型默认没有长度,应该是隐藏了,然后我回退到8.0.18版本
1、下载mysql
本人选的linux generic 通用版 64位
2、把mysql传到服务器并解压到/usr/local
tar -xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
mysql默认使用的basedir是/usr/local/mysql,但是我想装到其他地方
3、进入/var/local目录:
cd /var/local
4、修改文件夹目录名
mv ./mysql-8.0.18-linux-glibc2.12-x86_64 ./mysql
5、为centos添加mysql用户组和mysql用户(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限):
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
6、进入安装mysql软件的目录,命令如下:
cd /var/local/mysql
7、修改当前目录拥有者为新建的mysql用户,命令如下:
chown -R mysql:mysql ./
8.安装mysql,命令如下:
# basedir参数用于指定解压后的文件夹路径
--basedir=/var/local/mysql
# datadir参数用于指定数据目录,mysql会自动创建该目录
--datadir=/data/mysql/mysqldb
# defaults-file参数指定配置文件路径,不指定默认其实就是/etc/my.cnf
--defaults-file=/etc/my.cnf
# 创建日志文件
/data/mysql/log/mysqld.log
# 创建pid文件
/data/mysql/run/mysqld.pid
# 根目录给777权限
chmod 777 /data
# 给数据目录赋用户组
chown mysql:mysql -R /data/mysql
# 给数据目录赋权限
chmod 775 -R /data/mysql
# 不指定配置文件初始化
# 执行初始化,--user=mysql指定使用mysql这个用户去初始化
./bin/mysqld --user=mysql --basedir=/var/local/mysql --datadir=/data/mysql/mysqldb --initialize
# 指定配置文件初始化,先在目标目录创建配置文件my.cnf,使用下面第9点的配置
# 执行初始化,--user=mysql指定使用mysql这个用户去初始化
./bin/mysqld --user=mysql --basedir=/var/local/mysql --datadir=/data/mysql/mysqldb --defaults-file=/etc/my.cnf --initialize
提示缺少libnuma.so.1这个文件,可能是因为系统是64位的,系统没有64位的这个so库,然后百度下载安装了这个文件
centos7是没有这个问题的
下载地址参考该贴:http://blog.csdn.net/lzwglory/article/details/54809519
libnuma.so.1下载地址:http://mirror.centos.org/centos/6/os/x86_64/Packages/numactl-2.0.9-2.el6.x86_64.rpm
下载后打命令安装
rpm -ivh /root/java//numactl-2.0.9-2.el6.x86_64.rpm
提示缺少libaio.so.1这个文件,安装libaio即可
yum install -y libaio
安装完成后;继续执行命令安装mysql
./bin/mysqld --user=mysql --basedir=/var/local/mysql --datadir=/data/mysql/mysqldb --initialize
安装成功后,记住随机密码
9.开启mysql服务,命令如下:
./support-files/mysql.server start
如果开启mysql服务失败,报什么路径找不到,那是因为mysql启动时,会读mysql的配置文件/etc/my.cnf,因为里面的初始路径不对
修改内容如下,datadir和socket都修改成mysql的安装目录下,增加[client]板块,用于命令行连接mysql数据库
[mysqld]
port=3306
# 设置mysql的安装目录
basedir=/var/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/data/mysql/mysqldb
# 指定服务端通信文件
socket=/data/mysql/mysql.sock
user=mysql
# 最大连接数
max_connections=2000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
federated
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 设置忽略大小写
lower_case_table_names = 1
# 指定编码 utf8
# character-set-server=utf8
# 指定编码 utf8mb4
character-set-server=utf8mb4
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# utf8的排序规则
# collation-server=utf8_general_ci
# utf8mb4的排序规则
collation-server=utf8mb4_0900_ai_ci
# 开启ip绑定
bind-address = 0.0.0.0
# pid文件路径
pid-file=/data/mysql/run/mysqld.pid
# 指定服务id
server-id=101
# 同步主库时,跳过主键冲突、表已存在等错误代码如1062,1032,1060
# slave-skip-errors = 1062,1032,1060
[mysqld_safe]
log-error=/data/mysql/log/mysqld.log
[mysql]
# 设置mysql客户端默认字符集
# default-character-set=utf8
default-character-set=utf8mb4
[client]
#指定客户端连接mysql时的socket通信文件路径
socket=/data/mysql/mysql.sock
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# 指定编码
# default-character-set=utf8
default-character-set=utf8mb4
如果依然启动不了提示“The server quit without updating PID file”
参考:http://www.xiazaiba.com/jiaocheng/10354.html 处理
应该是程序已经存在mysql进程
ps -ef|grep mysqld
kill -9 进程号
杀掉进程即可
注意:如果并不是程序中已经存在mysql进程。则基本是文件夹权限问题,由于初始化是用user为mysql的帐号初始化,所以必须保证mysql的数据目录,还有log目录,run目录,的拥有者为mysql
如下
# ls -al
drwxrwxr-x. 5 mysql mysql 4096 Jan 15 05:14 .
drwxrwxrwx. 15 root root 4096 Jan 15 03:58 ..
drwxrwxr-x. 2 mysql mysql 4096 Dec 26 16:19 log
drwxrwxr-x 10 mysql mysql 4096 Jan 15 05:14 mysqldb
srwxrwxrwx 1 mysql mysql 0 Jan 15 05:14 mysql.sock
-rw------- 1 mysql mysql 7 Jan 15 05:14 mysql.sock.lock
drwxrwxr-x. 2 mysql mysql 4096 Jan 15 05:14 run
根目录也是mysql
#cd ..
#ls -al
drwxrwxr-x. 5 mysql mysql 4096 Jan 15 05:14 mysql
10.将mysql进程放入系统进程中,命令如下:
cp support-files/mysql.server /etc/init.d/mysqld
11.重新启动mysql服务,命令如下:
service mysqld restart
12.使用随机密码登录mysql数据库,命令如下:
先把mysql的命令设置为环境变量
/etc/profile中添加语句
export PATH=$PATH:/var/local/mysql/bin
编译/etc/profile
source /etc/profile
登录mysql
mysql -u root -p
等待系统提示,输入随机密码,即可登录
13.进入mysql操作行,为root用户设置新密码(小编设为rootroot):
alter user 'root'@'localhost' identified by 'rootroot';
14.设置允许远程连接数据库,命令如下:
先选择数据库
use mysql
update user set user.Host='%' where user.User='root';
查看修改后的值
select user,host from user;
15.刷新权限,命令如下:
flush privileges;
16、开启3306防火墙端口,然后即可远程连接mysql
17、如果还是无法远程连接,查看/etc/my.cnf
找到bind-address = 127.0.0.1这一行
改为bind-address = 0.0.0.0即可