> CentOS > CentOS教程 >

Centos上安装MySQL社区版

1.先从www.mysql.com 网站上下载到最新版的mysql社区版安装包,我下到的是mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz



2.mysql安装包里是没有./configure & make这一套东东的,需要按照其说明文档进行操作,这里从安装包里看到的是INSTALL-BINARY,用UE打开后

其中有一段

shell> groupadd mysql

shell> useradd -r -g mysql -s /bin/false mysql

shell> cd /usr/local

shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz  #注意把路径更换为自己下载的安装包位置和名称

shell> ln -s full-path-to-mysql-VERSION-OS mysql #同上,把解压出来的实际路径名称填上

shell> cd mysql

shell> mkdir mysql-files

shell> chmod 770 mysql-files

shell> chown -R mysql .

shell> chgrp -R mysql .

shell> bin/mysql_install_db --user=mysql    # Before MySQL 5.7.6

shell> bin/mysqld --initialize --user=mysql # MySQL 5.7.6 and up  在初始化的时候,一定要仔细看屏幕,最后大概有一行2015-12-24T09:05:03.283677Z 1 [Note] A temporary password is generated for root@localhost: kklNBwkei1.t   #注意这是root的临时密码

shell> bin/mysql_ssl_rsa_setup              # MySQL 5.7.6 and up

shell> chown -R root .

shell> chown -R mysql data mysql-files  #这句执行时报错,我是把data去掉就好了

shell> bin/mysqld_safe --user=mysql &

# Next command is optional

shell> cp support-files/mysql.server /etc/init.d/mysql.server #注意这里cp出来的名字是mysql.server,而不是mysqld,所以启动服务时要用service mysql.server start,如果希望是mysqld,那最后这句就写成cp support-files/mysql.server /etc/init.d/mysqld,就行了

照着操作就可以了,也比较简单。不过我犯了个错误,抄错行了,已经初始化了,然后才发现。只好去rm掉/var/lib目录下的mysql目录,重新开始



启动服务 service mysqld start (如上一步中讲到的,有的同学的可能是service MySQL.server start)之后开始登录

为了方便,在bin目录中创建了一个链接文件 ln -s /usr/local/mysql/bin/mysql /bin/MySQL,当然也可以在环境变量中加入该路径,比如:PATH=$PATH:/usr/local/MySQL/bin

之后登录时总是报一个这样的错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

好像是说找不到socket文件,查了一下,这个文件要是损坏了,只要重启一下服务就好,说明这就是服务启动后才会出现的类似监听端口的配置文件

然后试了一下mysql -uroop -p --socket=/var/lib/mysql/mysql.sock 输入初始化时记录的密码

登录成功

因此,ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

然后 就全都搞定了

还有最后一步,改一下root密码

set password for 'root'@'localhost' =  password('wjz');

补充说明一点,上面操作均是在root下完成的,当我们退出到普通账号之后,有可能发现执行MySQL命令的时候仍然报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
,这就可能是权限的问题了,查查/tmp目录中的MySQL.sock文件,以及/var/lib/mysql目录等,改一下权限,问题就可以解决了。


(责任编辑:IT)