linux安装mysql及中间遇到的问题

1,下载mysql安装包

wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz

2,将下载好的文件放置在/usr/local目录下,并解压

tar -zxvf mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz

3, 重命名并删除安装包

mv mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz mysql

rm -rf mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz(可以选择保留)

4,创建mysql用户组及系统用户

groupadd mysql

useradd -r -g mysql mysql (-r 表示创建系统用户,-g表示系统用户所属用户组)

5,进入mysql目录,执行mysql配置操作,死否覆盖按Y覆盖。

cp support-files/my-default.cnf /etc/my.cnf

6,编辑/etc/my.cnf文件

vi /etc/my.cnf

内容如下:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the

# *** default location during install, and will be replaced if you

# *** upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin

# These are commonly set, remove the # and set as required.

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

# server_id = .....

socket = /tmp/mysql.sock

character-set-server = utf8

skip-name-resolve

log-err = /usr/local/mysql/data/error.log

pid-file = /usr/local/mysql/data/mysql.pid

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

7,在mysql当前目录下设定目录的访问权限(注意后面的小点,表示当前目录)

chown -R mysql .          #修改当前目录的所有者(用户)为mysql,-R表示递归处理所有文件或者文件夹

chgrp -R mysql .          #修改当前目录所属的用户组为mysql用户组

chown -R root .

chown -R mysql data      #修改data没有了的所有者为mysql用户

8,初始化数据(在mysql/bin或者mysql/scripts下有个 mysql_install_db 可执行文件初始化数据库),进入mysql/bin或者mysql/scripts目录下,执行下面命令:

./mysql_install_db --verbose --user=root --defaults-file=/etc/my.cnf --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --pid-file=/usr/local/mysql/data/mysql.pid --tmpdir=/tmp

如果执行过程中出现如下错误,说明是缺少相关依赖,执行如下命令解决,解决后重新执行脚本。

yum -y install autoconf 或者 yum -y install perl perl-devel

yum install libaio* 或者 yum -y install libaio-devel

9,启动mysql,进入/usr/local/mysql/bin目录,执行下面命令

./mysqld_safe --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock --user=root &

10,配置mysql服务和开机启动(这个是针对linux系统的通用操作,centos7有其他方式),可以参看《Centos7 自定义systemd service服务和开机启动》一文

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql

chmod 700 /etc/init.d/mysql

chkconfig --add mysqld

chkconfig --level 2345 mysqld on

chown mysql:mysql -R /usr/local/mysql/

11,可以选择重启操作系统reboot,查看开机启动是否生效。

12,操作mysql服务的命令

service mysqld status #查看mysql状态

service mysqld restart  #重启mysql服务

service mysqld stop #停止mysql服务

service mysqld start #启动mysql服务

13,添加msql客户端

ln  -s /usr/local/mysql/bin/mysql  /usr/bin

14,更改访问权限

登录mysql,执行下面命令:

mysql -uroot -p

密码为空直接回车,运行以下两条命令

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root123' with grant option;

Flush privileges;

15,退出mysql

exit

注:本机访问mysql,root账户默认是没有密码的,端口号默认3306,如果需要修改root账户密码,在/usr/local/mysql/bin目录下,执行下面命令

./mysqladmin -h 127.0.0.1 -P3306 -uroot password 'root123'exit

16,mysql访问遇到的问题

使用navicat客户端,在其他机器上用账号和密码连接mysql服务器能够正常连接和操作,但是在本机上利用 mysql -hMysql服务器ip -uroot -proot123却拒绝连接,利用mysql -hMysql服务器ip -uroot -p 回车却能够正常登陆,这造成了部署到该服务器的web系统不能够正常连接mysql服务器。

问题原因:mysql是针对不同的ip,同一个用户可以拥有不同的密码,出现上述问题的原件就是navicat客户端所在机器的ip使用的root账号需要密码,但是本地用root连接mysql服务器却不需要密码。

解决办法:1,查询系统库mysql中的user表

select user,host,password from user;

2,删除host为localhost、127.0.0.1且密码为null的字段,为了安全甚至可以将user为null的内容也删除。

3,执行

flush privileges;

4,重启mysql服务

service mysqld restart

推荐阅读更多精彩内容