linux下搭建数据库mysql

时间:2023-01-17 17:10:28

《二》安装Mysql

创建日志目录

修改vi /etc/my.cnf
my.cnf文件配置
查看mysql服务的socket文件位置:find / -name mysql.sock

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

启用慢查询日志

slow_query_log = 1

如果查询时间长于“long_query_time”设定的值,那就把此查询查询到“slow_query_log_file”文件中

long_query_time = 1

slow_query_log_file = /home/log/mysqllog/log.log

定义错误日志文件

log_error = /home/log/mysqllog/log.log

relay_log_recovery=0

创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

lower_case_table_names=1

max_allowed_packet=16M

定义二进制日志文件

log-bin=/home/log/mysqllog/mysql-bin

每一次事件提交就使日志同步到磁盘,默认“sync_binlog=0”,表示让系统自己来flush使在内存的日志刷到磁盘,设置为“1”是一种安全的设置,因为当系统crash时你最多丢失一个事件,但相反会增加系统的
IO,即使这样也建议设置成“1”

sync_binlog = 1

二进制日志的格式修改成“row”

binlog_format=row

设置服务器ID号

server-id =61

slave-skip-errors=all

sql_mode config detail:http://tech.it168.com/a2012/0822/1388/000001388401.shtml

sql_mode=”STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

[client]

default-character-set=utf8

socket=/tmp/mysql.sock

设置服务器ID(1到232-1),不能重复,用ip最后一段,测试机从200开始,正式机从50,100开始
重点注意,如果是新数据库需要复制其他数据库的数据,server-id不能再用原来的id

参考http://www.cnblogs.com/gomysql/p/5852607.html

server-id = 209

所有日志文件改到日志目录/home/log/mysqllog

mkdir /home/log/mysqllog

mkdir /home/log/mysqllog/mysql-bin

修改mysql日志文件夹权限

cd /home/log/mysqllog

chown -R mysql:mysql ./

创建log.log

vi /home/log/mysqllog/log.log

chown -R mysql:mysql /home/log/mysqllog/log.log

chmod 777 /home

chmod 777 /home/log

chmod 777 /home/log/mysqllog/log.log

chgrp -R mysql /home/log/mysqllog

mysql包导入/usr/local/下
删除/usr/local/mysql/data下的所有东西

chmod -R 777 /usr/local/mysql

会报错确实libaio.so.1包:yum install libaio*

执行:vi /etc/ld.so.conf
添加:/usr/lib

保存后,在命令行终端执行:/sbin/ldconfig -v
(其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。)

创建mysql服务(mysql_install_db被弃用了):/usr/local/mysql/bin/mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data

启动mysql服务:/usr/local/mysql/bin/mysqld_safe –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data &

出错

[root@localhost bin]# ./mysqladmin -uroot -p password

Enter password: //这里输入上面的v:gNXSw5FTkw

New password: //重新输入新密码

Confirm new password: //重新输入新密码

#############################

mysql -uroot -p

在日志中找到初始密码

/home/log/mysqllog/

/usr/local/mysql/data/

##########################################
(可能出现问题,可用如下设置空白密码的方法重置密码)

2.修改MySQL的登录设置:

vi /etc/my.cnf

在[mysqld]的段中加上一句:skip-grant-tables

停止mysqld;

/usr/local/mysql/bin/mysqld_safe stop

(可能有其它的方法,总之停止mysqld的运行就可以了)

查看mysql服务
ps -ef|grep mysql

kill -9 进程(强制关闭)

用以下命令启动MySQL,以不检查权限的方式启动;

/usr/local/mysql/bin/mysqld_safe –skip-grant-tables

然后用空密码方式使用root用户登录 MySQL;

mysql -u root

修改root用户的密码;

5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string

mysql> update mysql.user set authentication_string=PASSWORD(‘Atnsmi.com’) where User=’root’;

mysql> flush privileges;

mysql> quit

##########################################

SET PASSWORD FOR root@localhost= PASSWORD(‘testadmin’);

给指定ip连接数据库权限:GRANT ALL PRIVILEGES ON . TO ‘root’@’172.69.6.163’IDENTIFIED BY ‘testadmin’ WITH GRANT OPTION;

重新设置一次密码:SET PASSWORD = PASSWORD(‘testadmin’);

配置Mysql开机启动服务star

将服务文件拷贝到init.d下,并重命名为mysql

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

赋予可执行权限:chmod +x /etc/init.d/mysqld

添加服务:chkconfig –add mysqld

显示服务列表:chkconfig –list

如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入

chkconfig –level 345 mysql on

重启电脑:reboot

验证:netstat -na | grep 3306

配置Mysql开机启动服务end

收回权限:revoke ALL PRIVILEGES ON . from ‘root’@’172.69.6.163’;

flush privileges;

在主服务器上创建拥有复制权限的帐户:

mysql –uroot -p

mysql>GRANT replication slave,replication client ON . TO ‘repuser’@’172.69.1.244’ IDENTIFIED BY ‘repadmin’;

FLUSH PRIVILEGES;

SHOW MASTER STATUS; #记录下当前主服务器所使用的二进制文件及position

防火墙端口配置:
vi /etc/sysconfig/iptables

sudo systemctl start vncserver@:1.service

long_query_time = 1

slow_query_log_file = /home/log/mysqllog/log.log

定义错误日志文件

log_error = /home/log/mysqllog/log.log

relay_log_recovery=0

创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

lower_case_table_names=1

max_allowed_packet=16M

定义二进制日志文件

log-bin=/home/log/mysqllog/mysql-bin

每一次事件提交就使日志同步到磁盘,默认“sync_binlog=0”,表示让系统自己来flush使在内存的日志>刷到磁盘,设置为“1”是一种安全的设置,因为当系统crash时你最多丢失一个事件,但相反会增加系统的
IO,即使这样也建议设置成“1”

sync_binlog = 1

二进制日志的格式修改成“row”

binlog_format=row

设置服务器ID号

server-id =61

slave-skip-errors=all

sql_mode config detail:http://tech.it168.com/a2012/0822/1388/000001388401.shtml

sql_mode=”STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

[client]

default-character-set=utf8

socket=/tmp/mysql.sock

设置服务器ID(1到232-1),不能重复,用ip最后一段,测试机从200开始,正式机从50,100开始

重点注意,如果是新数据库需要复制其他数据库的数据,server-id不能再用原来的id

参考http://www.cnblogs.com/gomysql/p/5852607.html

server-id = 209

所有日志文件改到日志目录/home/log/mysqllog

mkdir /home/log/mysqllog

mkdir /home/log/mysqllog/mysql-bin

修改mysql日志文件夹权限

cd /home/log/mysqllog

chown -R mysql:mysql ./

创建log.log

vi /home/log/mysqllog/log.log

chown -R mysql:mysql /home/log/mysqllog/log.log

chmod 777 /home

chmod 777 /home/log

chmod 777 /home/log/mysqllog/log.log

chgrp -R mysql /home/log/mysqllog

mysql包导入/usr/local/下
删除/usr/local/mysql/data下的所有东西

chmod -R 777 /usr/local/mysql

会报错确实libaio.so.1包:yum install libaio*

执行:vi /etc/ld.so.conf
添加:/usr/lib

保存后,在命令行终端执行:/sbin/ldconfig -v
(其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。)

创建mysql服务(mysql_install_db被弃用了):/usr/local/mysql/bin/mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data

启动mysql服务:/usr/local/mysql/bin/mysqld_safe –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data &

出错

[root@localhost bin]# ./mysqladmin -uroot -p password

Enter password: //这里输入上面的v:gNXSw5FTkw

New password: //重新输入新密码

Confirm new password: //重新输入新密码

#############################

mysql -uroot -p

在日志中找到初始密码

/home/log/mysqllog/

/usr/local/mysql/data/

##########################################
(可能出现问题,可用如下设置空白密码的方法重置密码)
2.修改MySQL的登录设置:

vi /etc/my.cnf

在[mysqld]的段中加上一句:skip-grant-tables

停止mysqld;

/usr/local/mysql/bin/mysqld_safe stop

(可能有其它的方法,总之停止mysqld的运行就可以了)

查看mysql服务
ps -ef|grep mysql

kill -9 进程(强制关闭)

用以下命令启动MySQL,以不检查权限的方式启动;

/usr/local/mysql/bin/mysqld_safe –skip-grant-tables

然后用空密码方式使用root用户登录 MySQL;

mysql -u root

修改root用户的密码;

5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string

mysql> update mysql.user set authentication_string=PASSWORD(‘Atnsmi.com’) where User=’root’;

mysql> flush privileges;

mysql> quit

##########################################

SET PASSWORD FOR root@localhost= PASSWORD(‘testadmin’);

给指定ip连接数据库权限:GRANT ALL PRIVILEGES ON . TO ‘root’@’172.69.6.163’IDENTIFIED BY ‘testadmin’ WITH GRANT OPTION;

重新设置一次密码:SET PASSWORD = PASSWORD(‘testadmin’);

配置Mysql开机启动服务star

将服务文件拷贝到init.d下,并重命名为mysql

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

赋予可执行权限:chmod +x /etc/init.d/mysqld

添加服务:chkconfig –add mysqld

显示服务列表:chkconfig –list

如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入

chkconfig –level 345 mysql on

重启电脑:reboot

验证:netstat -na | grep 3306

配置Mysql开机启动服务end

收回权限:revoke ALL PRIVILEGES ON . from ‘root’@’172.69.6.163’;

flush privileges;

在主服务器上创建拥有复制权限的帐户:

mysql –uroot -p

mysql>GRANT replication slave,replication client ON . TO ‘repuser’@’172.69.1.244’ IDENTIFIED BY ‘repadmin’;

FLUSH PRIVILEGES;

SHOW MASTER STATUS; #记录下当前主服务器所使用的二进制文件及position

防火墙端口配置:
vi /etc/sysconfig/iptables

sudo systemctl start vncserver@:1.service