linux 安装mysql

1.1 安装准备

1、  创建安装文件存放目录。

mkdir /usr/local/software

2、 将安装文件上传至/usr/local/software

3、 

1.2 MYSQL安装

1、 使用root用户分别登录机器,分别按照安装方式在三台机器上进行安装。

2、 创建MYSQL安装目录

cd /usr/local/software

 

3、 进入安装文件存放目录。

cd /usr/local/software

4、 解压MYSQL安装包。

tar zxvf mysql-5.7.23-el7-x86_64.tar.gz

5、 将解压文件拷贝至/usr/local/mysql目录中。

cd mysql-5.7.23-el7-x86_64

cp -rf * /usr/local/mysql

6、 添加用户和组

groupadd mysql

useradd -r -g mysql mysql

7、 手动创建MySql data和日志目录

mkdir /usr/local/mysql/data

mkdir /usr/local/mysql/log

8、 目录权限设置

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

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

9、 配置my.cnf文件

vi /etc/my.cnf

#文件调整为如下(server_id 配置项,三台机器不可设置为一样,可以根据ip地址最后一组数字进行设置):

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

server_id=128

port = 3306

user = mysql

socket = /tmp/mysql.sock

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

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

max_connections = 1000

max_connect_errors = 1000

table_open_cache = 1024

max_allowed_packet = 128M

open_files_limit = 65535

 

 

#####====================================[innodb]==============================

innodb_buffer_pool_size = 1024M

innodb_file_per_table = 1

innodb_write_io_threads = 4

innodb_read_io_threads = 4

innodb_purge_threads = 2

innodb_flush_log_at_trx_commit = 1

innodb_log_file_size = 512M

innodb_log_files_in_group = 2

innodb_log_buffer_size = 16M

innodb_max_dirty_pages_pct = 80

innodb_lock_wait_timeout = 30

innodb_data_file_path=ibdata1:1024M:autoextend

#####====================================[log]==============================

log_error = /usr/local/mysql/log/mysql-error.log

slow_query_log = 1

long_query_time = 1

slow_query_log_file = /usr/local/mysql/log/mysql-slow.log

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

10、 配置环境变量

vi /etc/profile

export PATH=$PATH:/usr/local/mysql/bin

source /etc/profile

11、 配置启动文件

ln –s /usr/local/mysql/bin/mysql /usr/bin/mysql

12、 系统默认启动

touch /usr/lib/systemd/system/mysql.service

[Unit]

Description=MySQL Server

Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target

After=syslog.target

[Install]

WantedBy=multi-user.target

[Service]

User=mysql

Group=mysql

ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf

LimitNOFILE = 5000

#Restart=on-failure

#RestartPreventExitStatus=1

#PrivateTmp=false

 

13、 初始化数据库

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --innodb_undo_tablespaces=3 --explicit_defaults_for_timestamp

   

使开机启动文件生效

systemctl daemon-reload

启动服务

systemctl start mysql

14、 修改密码和远程访问权限

查询mysql 数据库root用户的密码

more  /usr/local/mysql/log/mysql-error.log

密码在mysql-error.log文件中的

 

登录mysql

mysql -u root -p

输入密码后,会提示修改当前密码,新密码替换以下标红处

SET PASSWORD = PASSWORD('root1234');

 

update mysql.user set authentication_string=password('root1234') where user='root';

 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root1234';

 

FLUSH PRIVILEGES;

15、 创建数据库、用户名和密码

Create database uprofiledb;

Create user 'uprofile' @'%' IDENTIFIED BY 'uprofile';

GRANT ALL PRIVILEGES ON uprofiledb.* TO 'uprofile'@'%' IDENTIFIED BY 'uprofile';

FLUSH PRIVILEGES;

 

mysql 非root用户安装

mkdir $base_mysql_dir/data
mkdir $base_mysql_dir/log
curruser=$USER
cat >$base_mysql_dir/my.cnf<<EOF

[mysqld]
basedir=$base_mysql_dir
datadir=$base_mysql_dir/data
port=$port
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1
log-error=$base_mysql_dir/log/mysql.log
pid-file=$base_mysql_dir/mysql.pid
default-storage-engine=INNODB
character-set-server=utf8
plugin_dir=$base_mysql_dir/lib/plugin
socket=$base_mysql_dir/mysql.sock

[mysqld_safe]
socket=$base_mysql_dir/mysql.sock

[mysqladmin]
socket=$base_mysql_dir/mysql.sock
[mysql]
socket=$base_mysql_dir/mysql.sock

EOF

#初始化mysql
$base_mysql_dir/bin/mysqld --initialize --user=$curruser --basedir=$base_mysql_dir --datadir=$base_mysql_dir/data 2>&1 | tee $base_m
ysql_dir/log/mysql.log >/dev/null 2>&1


if [ "$?" -ne "0" ]; then
error_exit "initialize 初始化数据库失败!!!"
fi

#初始化密码
init_passwd=`tail -1 $base_mysql_dir/log/mysql.log |awk '{print $NF}'` >/dev/null 2>&1

#启动mysql
$base_mysql_dir/bin/mysqld_safe --defaults-file=$base_mysql_dir/my.cnf --user=$curruser --basedir=$base_mysql_dir --datadir=$base_mysql_dir/data &


# 验证mysql启动后才可连接.
num=0
verify_str='Version.*socket.*port.*MySQL Community Server'
while true
do
[ $num -gt 5 ] && break
test -n "`grep -P -i "$verify_str" $base_mysql_dir/log/mysql.log`" && break || {
sleep 5;
let n++;
}
done

$base_mysql_dir/bin/mysqladmin --defaults-file=$base_mysql_dir/my.cnf -uroot -p$init_passwd password "$password" >/dev/null 2>&1
$base_mysql_dir/bin/mysql --defaults-file=$base_mysql_dir/my.cnf -uroot -p$password < $localSqlfile >/dev/null 2>&1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-04-08 22:20  zhoufly  阅读(184)  评论(0编辑  收藏  举报