三、Linux下Mysql安装配置

1、Mysql下载

1、把下载的安装包移动到/usr/local/下,解压。

#    tar zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

2、修改解压后的文件夹名称

#    mv ./mysql-5.6.33-linux-glibc2.5-x86_64 ./mysql

2、Mysql配置

1、添加系统mysql组和mysql用户

#    groupadd mysql

#    useradd -r -g mysql mysql  //useradd -r参数表示mysql用户是系统用户,不可用于登录系统。

2、更改所属的组和用户

进入mysql文件夹,也就是mysql所在的目录。

[root@localhost local]#       cd mysql

[root@localhost mysql]#     chown -R mysql:mysql ./

3、执行mysql_install_db脚本

mysql中的data目录进行初始化并创建一些系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(就是我们之前设置的mysql用户)执行这个脚本,或者用root执行,但是加上参数:--user=mysql

[root@localhost mysql]#     ./scripts/mysql_install_db --user=mysql

*注意:如果mysql的安装目录(解压目录)不是/usr/local/mysql,那么还必须指定目录参数,如

[root@localhost mysql]#     ./scripts/mysql_install_db --user=mysql   --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

该命令行中的–user=mysql表示运行mysql数据库时所使用的用户,

–basedir=/usr/local/mysql表示mysql数据库说安装的位置,

–datadir=/usr/local/mysql/data表示mysql数据库的数据文件存储的位置。

*错误1Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决办法:yum install -y libaio

*错误2(待确定)

/etc/my.cnf 已存在,可以在删除其后再重新执行以上命令,不然会在后面启动mysql是报:Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/host.localdomain.pid).

4、更改文件权限

mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。

[root@localhost mysql]#     chown -R root:root ./

[root@localhost mysql]#     chown -R mysql:mysql ./data

5、配置my.cnfmysql开机启动

数据库初始化完毕后,我们还有两个工作要做。

一是配置mysql的配置文件my.cnf

[root@localhost mysql]#     cp my-default.cnf /etc/my.cnf

低版本my-default.cnf 名称可能为my-medium.cnf

my.cnf文件

log-bin = /var/lib/mysql/mysql-bin  #记录数据库操作日志(delete),可实现增量恢复数据

expire_logs_days = 30           #定义binlog自动删除时间(若数据重要,建议不开启)

basedir=/usr/local/mysql           # 使用给定目录作为根目录(安装目录)

datadir=/usr/local/mysql/data    # 设置mysql数据库的数据的存放目录

port = 3306                             #设置3306端口

server_id = 1                             #给服务器分配一个唯一的ID编号(范围1~232次方)

socket = /var/lib/mysql/mysql.sock #为客户程序与服务器间本地通信指定一个套接字文件

character-set-server=utf8         # 数据表默认字符集(默认为latin1)

max_connections=200             # 允许最大连接数(默认是151,可不配置)

 

二是配置mysql启动文件。

首先将support-files /mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld

[root@localhost mysql]#    cp ./support-files/mysql.server /etc/init.d/mysqld

也可能是:cp support-files/mysql.server /etc/rc.d/init.d/mysqld

6、启动mysqld服务。

[root@localhost mysql]#   service mysqld start
 

若需要将mysqld服务加入开机自启动项。可通过chkconfig命令将mysqld服务加入到自启动服务项中。

[root@localhost mysql]#   chkconfig --add mysqld

*注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。

*查看是否添加成功

[root@localhost mysql]#   chkconfig --list mysqld

mysqld   0:off      1:off        2:on        3:on        4:on        5:on        6:off

 

正常提示信息:Starting MySQL. SUCCESS!

最后将mysql客户端放到默认路径,就可以linux下登录了

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

注意:建议使用软链过去,不要直接包文件复制,便于系统安装多个版本的mysql

这是由于/etc/init.d/mysqld 没有配置basedir= datadir= 路径

通过使用 mysql -u root -p 连接数据库(默认数据库的root用户没有密码,需要设置一个密码)。这里任务算是完成,之后就可以创建数据库用户,然后使用数据库了。

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

解决方法打开/etc/my.cnf,看看里面配置的socket位置是什么目录。“socket=/var/lib/mysql/mysql.sock”

路径和“/tmp/mysql.sock”不一致。建立一个软连接:

#  ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

7、权限控制去除匿名用户

# 测试匿名用户登录
#    mysql -u root

可以看到匿名用户可以登录,具有information_schematest库的相关权限。

# 删除匿名用户,使用root用户登录数据库
mysql>delete from mysql.user where User='';

mysql>flush privileges;

 再次测试匿名用户登录

8、修改mysqlroot用户密码,root初始密码为空的:

#    ./bin/mysqladmin -u root password '密码'

9、其它

9.1、查看mysql配置是否配置成功,编辑my.cnf,指定mysql安装路径和mysql数据文件存放路径,下图还配置了bin-log,配置bin-log的同时需要指定server_id

9.2、到此我们mysql的配置文件就整理完了,可以通过开启bin-log,重启mysql,查看配置是否生效,如果生效那么,以上配置成功。

如果修改my.cnf后启动不了,可以通过如下方式查看错误信息

#   mysqld --verbose --help |grep -A

9.3使用数据库工具连接时报1130错误:由于没有给远程连接的用户权限问题

方法一:更改‘mysql’数据库‘user’表‘host’项,从‘localhost’改成‘%

 mysql -u root -p    //进入mysql控制台

 mysql>use mysql;

 mysql>update user set host = '%' where user = 'root';    //这个命令执行错误时可略过 

 mysql>flush privileges;

 mysql>select host, user from user; //检查‘%’ 是否插入到数据库中

 mysql>quit

注:若以上还不行,可按以下检查

检查默认端口:show global variables like 'port';

再检查进程实际监听地址:netstat -nlp|grep 3306

若显示为127.0.0.1:3306则说明mysqlbind-address设置为bind-address=127.0.0.1,可以简单理解为目前,仅服务器所在机器可以访问到这个mysql(127.0.0.1为本机回环地址,一般为进程间通信时利用,该地址仅允许本机访问)
解决方法为:
修改/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/mysql/my.conf路径下的bind-address参数

将其中的bind-address=127.0.0.1改为bind-address=0.0.0.0,再重启mysql服务/etc/init.d/mysql restart

方法二:直接授权

mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION;

9.4中文乱码无法插入ERROR 1366 (HY000): Incorrect string value:

进入数据库输入命令mysql>show variables like '%char%'

/etc/my.cnf中添加character-set-server=utf8

再测试插入汉字试试,注意新建表的字段时字符集选择utf8.

3、Root密码重置

1、编辑/etc/my.cnf

[mysqld] 配置部分添加一行

skip-grant-tables
 

2、保存后重启mysql

[root@localhost etc]# service mysqld restart
Shutting down MySQL.                                       [  OK  ]
Starting MySQL.                                                   [  OK  ]

3
、登录数据库重新设置root密码

[root@localhost ~]# mysql -u root -p mysql
Enter password:

直接回车进入

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.47-log Source distribution

Copyright (c) 2000, 2010, 
Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

执行下列语句
mysql> update user set password=password("mysql") where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 

4、删除/etc/my.cnf文件中添加的“skip-grant-tables”行,重启mysql

用新设的密码就能正常登录了;

4、my.cnf配置详解

参考1:linux下mysql配置文件my.cnf详解

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值