由于客户的CentOS服务器没有安装yum工具,只能通过下载tar.gz包安装mysql,于是跟着万能的百度开启了漫漫踩坑之旅:
1、下载mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
2、解压到/usr/local/文件夹下,并改名为mysql
3、添加mysql用户组和mysql用户
groupadd mysql
useradd -r -g mysql mysql
4、进入mysql文件夹
5、修改当前目录拥有者为刚才新建的mysql用户:
chown -R mysql:mysql ./
6、复制默认全局启动参数配置文件到/etc目录:
网上的教程说是
cp ./support-files/my-medium.cnf /etc/my.cnf
结果发现support-files目录下根据没有my-medium.cnf文件;于是继续百度、google,最终用下面的方式解决:
先修改support-files/my-default.cnf文件,在文件中增加:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为utf8字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_name=1
max_allowed_packet=16M
然后复制到/etc下,并改名为my.cnf:
cp ./support-files/my-default.cnf /etc/my.cnf
7、执行安装包中自带脚本,安装数据库:
./scripts/mysql_install_db --user=mysql
结果报错(具体错误我也忘了),安装不下去,改为:
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql
可以往下装了,但是又报错:Can't find messagefile /usr/share/mysql/errmsg.sys
网上有解决方案是在my.conf文件的[mysqld]部分增加一句:
language = /usr/local/mysql/share/english
但是不起作用,错误依旧。后来我把/user/local/mysql/share/english文件夹下的errmsg.sys文件复制到/usr/share/mysql/下,问题解决,终于装上了。
8、修改当前目录拥有者为root用户,修改data目录拥有者为mysql用户
chown -R root:root ./
chown -R mysql:mysql data
9、启动mysql
sudo /usr/local/mysql/support-files/mysql.server start
10、修改root密码
./bin/mysqladmin -u root password '密码'
11、部署应用后,发现mysql命令可以连接,但是jdbc连不上mysql,经过一番折腾,发现是授权问题,给root授权访问localhost的权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'IDENTIFIED BY '12345' WITH GRANT OPTION;
FLUSH PRIVILEGES;
神奇的是授权后还是不行,查看mysql的user表:
SELECT user,host,password FROM mysql.user;
发现root访问localhost、127.0.0.1、%的密码居然不一样,修改:
UPDATE mysql.user SET password=PASSWORD('密码') WHERE user='root';
重启mysql,终于jdbc也可以正常连接了;
12、 把mysql添加到环境变量:
vi /etc/profile
在文件中增加
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
让修改生效
source /etc/profile
13、这时再使用mysql命令行连接时又报错:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
查看my.cnf,发现配置了socket=/var/lib/mysql/mysql.sock,于是执行下面的命令创建一个软连接后解决:
ln -s /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock