数据库之mysql

安装mysql-server时连同客户端与perl环境一起安装了

centos6.5安装mysql
[root@localhost ~]# yum install mysql-server Installing: mysql-server x86_64 5.1.73-3.el6_5 base 8.6 M Installing for dependencies: mysql x86_64 5.1.73-3.el6_5 base 894 k perl x86_64 4:5.10.1-136.el6_6.1 updates 10 M perl-DBD-MySQL x86_64 4.013-3.el6 base 134 k perl-DBI x86_64 1.609-4.el6 base 705 k perl-Module-Pluggable x86_64 1:3.90-136.el6_6.1 updates 40 k perl-Pod-Escapes x86_64 1:1.04-136.el6_6.1 updates 32 k perl-Pod-Simple x86_64 1:3.13-136.el6_6.1 updates 212 k perl-libs x86_64 4:5.10.1-136.el6_6.1 updates 578 k perl-version x86_64 3:0.77-136.el6_6.1 updates 51 k Updating for dependencies: mysql-libs x86_64 5.1.73-3.el6_5 base 1.2 M

 

centos7安装mysql(centos7没有mysql-server这个包了,所以需要下载一个源)
curl -O http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -qpl mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server
systemctl start mysqld
mysql

样本数据库地址
http://dev.mysql.com/doc/index-other.html

 

 

 

 

http://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html
As of MySQL 5.7.6, for MySQL installation using an RPM distribution, server startup and shutdown is managed by systemd on several Linux platforms. On these platforms, mysqld_safe is no longer installed because it is unnecessary. For more information, see Section 2.5.10, “Managing MySQL Server with systemd”. 
On systems that manage the server using systemd, mysqld_safe is not available. Instead, specify the allocation library by setting LD_PRELOAD in /etc/sysconfig/mysql.

 

下面两步用heidisql建立ssh隧道连接mysql,

需要修改ssh服务器上的/etc/ssh/sshd_config

AllowTcpForwarding yes 将此行开启(centos7默认开启,centos6.5需要手工开启)

场景为即使防火墙不开放3306,而只开放了22。就可以通过隧道来连接。

 Example settings:

    "Settings" tab:
        Hostname: "127.0.0.1"
        Password: [your mysql password]
        Port: "3306" in most cases
    "SSH tunnel tab:
        SSH Host: [your server name]
        Port: "22" in most cases
        Username: [your ssh user]
        Password: [your ssh password]
        Local port: "3307"

 

 

数据库字符集

http://www.cnblogs.com/HondaHsu/p/3640180.html

MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则。
这两个参数集可以在数据库实例、单个数据库、表、列等四个级别指定。


在编译MySQL的时候可以通过DEFAULT_CHARSET=utf8和DEFAULT_COLLATION=utf8_general_ci这两个参数(MySQL5.5版本,5.1版本用--with-charset=utf8 --with-collation=utf8_general_ci)来指定默认的字符集为utf8,这也是最一劳永逸的办法,这样指定后,客户端连接到数据库的编码方式也默认是utf8了,应用程序不需要任何处理。

否则MySQL的默认字符集是latin1

A common issue that can occur when the operating system uses utf8 or another multi-byte character set is that output from the mysql client is formatted incorrectly, due to the fact that the MySQL client uses the latin1 character set by default.
You can usually fix such issues by using this option to force the client to use the system character set instead.


1.在[mysqld]下添加
  default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)
2.在[client]下添加
  default-character-set=utf8


character-set-client: 客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。

character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。

show variables like '%char%';(查看mysql 字符集设置情况)

在查询结果中可以看到mysql 数据库系统中客户端、数据库连接、数据库、文件系统、查询结果、服务器、系统的字符集设置及mysql的字符设置目录。
文件系统字符集是固定的,系统、服务器的字符集在安装时确定,与乱码问题无关,乱码的问题与客户端、数据库连接、数据库、查询结果的字符集设置有关。(*注:客户端是看访问mysql 数据库的方式,通过命令行访问,命令行窗口就是客户端,通过JDBC 等连接访问,程序就是客户端。)

    我们在向mysql 写入中文数据时,在客户端、数据库连接、写入数据库时分别要进行编码转换;在执行查询时,在返回结果、数据库连接、客户端分别进行编码转换。现在我们应该清楚,乱码发生在数据库、客户端、查询结果以及数据库连接这其中一个或多个环节。

    在登录数据库时,我们用mysql --default-character-set=字符集-u root -p 进行连接,这时我们再用show variables like '%char%';命令查看字符集设置情况,可以发现客户端、数据库连接、查询结果的字符集已经设置成登录时选择的字符集了;如果是已经登录了,可以使用set names 字符集;命令来实现上述效果,等同于下面的命令:

set character_set_client = 字符集

set character_set_connection = 字符集

set character_set_results = 字符集
数据库的字符集可以修改mysql 的启动配置来指定字符集,也可以在create database 时加上default character set 字符集来强制设置database 的字符集,通过这样的设置,整个数据写入读出流程中都统一了字符集,就不会出现乱码了。


 

 

密码相关

1、改表法:
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从“localhost”改称“%”
mysql> use mysql;
mysql> update user set host = ‘%’ where user = ‘root’;
mysql> select host, user from user;
mysql> flush privileges;

2、授权法:
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword’ WITH GRANT OPTION;

mysql> Grant all privileges on *.* to 'root'@'%' identified by '******' with grant option;
Query OK, 0 rows affected, 1 warning (0.02 sec)


以root身份连接服务器,先查哪些账户没有口令
select host,user from mysql.user where Password = '';

然后为它们设置口令,有两种方法可以
1.set password for 'phpbb'@'%' = password('123qwe');    不需要刷新权限表
2.update mysql.user set password=password('123qwe') where user='root';
  flush privileges;                                     需要刷新权限表

查出账户有哪些权限
show grants            查看自己
show grants for 'film'@'%';  查看指定人
revoke all on phpbb.* from 'phpbb'@'%';
revoke grant option on phpbb.* from 'phpbb'@'%';
drop user ‘phpbb’@‘%';




 

centos7 mysql

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server

 CentOS 7的yum源中貌似没有正常安装mysql时的mysql-sever文件,需要去官网上下载
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server

成功安装之后重启mysql服务
# service mysqld restart

初次安装mysql是root账户是没有密码的

设置密码的方法
# mysql -uroot
mysql> set password for ‘root’@‘localhost’ = password('mypasswd');
mysql> exit

先从ftp-100上将mysql相关包上传到目标机器上,再做如下操作
[root@test-mysql ~]# curl -O ftp://192.168.1.100/01%CA%FD%BE%DD%BF%E2/MySQL/mysql-5.7.10-1.1.el7.x86_64.zip
   60  rpm -e --nodeps mariadb-libs
   33  yum install perl unzip net-tools
   46  unzip -d mysql mysql-5.7.10-1.1.el7.x86_64.zip
   45  cd mysql
   66  rpm -ivh mysql-commercial-client-5.7.10-1.1.el7.x86_64.rpm mysql-commercial-server-5.7.10-1.1.el7.x86_64.rpm mysql-commercial-libs-* mysql-commercial-common-5.7.10-1.1.el7.x86_64.rpm
   67  systemctl status mysqld
   68  systemctl start mysqld
   69  systemctl status mysqld
   77  vi /etc/my.cnf
方法一:
   在[mysqld]中加入skip-grant-tables,就可以不用密码进入数据库中了,然后修改root密码
mysql> use mysql
mysql> select * from user\G;
mysql> UPDATE user SET authentication_string=PASSWORD("123456") WHERE User='root';
mysql> update user set authentication_string=PASSWORD("1234567") where User="root";
mysql> flush privileges;
mysql> exit

方法二:
安装并启动后查看临时密码
   17  grep "password" /var/log/mysqld.log
   18  less /var/log/mysqld.log
   19  mysql -p    用这个临时密码
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> update user set authentication_string=PASSWORD("1234567") where User="root";
ERROR 1046 (3D000): No database selected
mysql> use mysql
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> SET PASSWORD FOR 'root'@'localhost'= "******";
Query OK, 0 rows affected (0.00 sec)
mysql> quit

 

 

 

 mysql的四种启动方式:

1、mysqld
启动mysql服务器:./mysqld --defaults-file=/etc/my.cnf --user=root
客户端连接:
mysql --defaults-file=/etc/my.cnf
or
mysql -S /tmp/mysql.sock
 
2、mysqld_safe
启动mysql服务器:./mysqld_safe --defaults-file=/etc/my.cnf --user=root &
客户端连接:
mysql --defaults-file=/etc/my.cnf
or
mysql -S /tm/mysql.sock
 
3、mysql.server
cp -v /usr/local/mysql/support-files/mysql.server /etc/init.d/
chkconfig --add mysql.server
启动mysql服务器:service mysql.server {start|stop|restart|reload|force-reload|status}
客户端连接:同1、2
 
4、mysqld_multi
mkdir $MYSQL_BASE/data2
cat <<-EOF>> /etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /user/local/mysql/bin/mysqladmin
user = mysqladmin
password = mysqladmin
 
[mysqld3306]
port            = 3306
socket          = /tmp/mysql3306.sock
pid-file = /tmp/mysql3306.pid
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
 
[mysqld3307]
port            = 3307
socket          = /tmp/mysql3307.sock
pid-file = /tmp/mysql3307.pid
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data2
EOF
 
#mysql -S /tmp/mysql3306.sock
mysql>GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' identified by 'mysqladmin' with grant option;
 
#mysql -S /tmp/mysql3307.sock
mysql>GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' identified by 'mysqladmin' with grant option;
 
启动mysql服务器:./mysqld_multi --defaults-file=/etc/my.cnf start 3306-3307
关闭mysql服务器:mysqladmin shutdown
 
可参考<<MySql5.1参考手册>>
http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#server-side-scripts


centos7,mysql5.6
多实例启动mysql

mkdir /home/mydb
mkdir /home/mydb/data
chown -R mysql:mysql mydb/
vi /home/mydb/my.cnf
[mysqld]
basedir=/home/mydb/
datadir=/home/mydb/data/
socket=/home/mydb/mysql.sock
user=mysql
port=3308

[mysqld_safe]
log-error=/home/mydb/mysqld.log
pid-file=/home/mydb/mysqld.pid

[client]
port    = 3308
socket  = /home/mydb/mysql.sock

初始化库
mysql_install_db --defaults-file=/home/mydb/my.cnf --datadir=/home/mydb/data/
启动库
mysqld_safe --defaults-file=/home/mydb/my.cnf &
连接库
mysql --defaults-file=/home/mydb/my.cnf

 

 
 
密码字典
oracle md5加密
select user_name,user_password from user_info
XY_WZZ 42857cfddb33f3fddb27fff9773683f3 fltscfw 26d3c4414d7d0d41a0e04f3352ef7ab5 HB_HDX 8c13b5750412d922b01b2da95d24f8b6 zzrs 031bde3d5400c43ccc42d5d10a9845a6 HX_APP 42857cfddb33f3fddb27fff9773683f3


root,123456
e10adc3949ba59abbe56e057f20f883e
root,fltadmin1!
e96afa2f44eb54bb0a4974c62c4b2842

KF_XB,
243fef24eadaf526bff9fd1a3db8a20c

wjk3a,
wjktest,
71ab97b863ed0fe2793d928abca40da0
71ab97b863ed0fe2793d928abca40da0

123456a?
42857cfddb33f3fddb27fff9773683f3

123abc!@#
8c13b5750412d922b01b2da95d24f8b6
8c13b5750412d922b01b2da95d24f8b6

123456a*
e3c65b81368974107064dd9e0001854b

(dzt823#^)
26d3c4414d7d0d41a0e04f3352ef7ab5



mysql> select host,user,password from user;
+-----------------------+--------+-------------------------------------------+
| host                  | user   | password                                  |
+-----------------------+--------+-------------------------------------------+
| localhost             | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost.localdomain | root   |                                           |
| 127.0.0.1             | root   |                                           |
| ::1                   | root   |                                           |
| localhost             | wuliu  | *66E7C3D401397A83C38FFA2DEC6AD48170960919 |
| localhost.localdomain |        |                                           |
| %                     | wuliu  | *66E7C3D401397A83C38FFA2DEC6AD48170960919 |
| %                     | rongke | *66E7C3D401397A83C38FFA2DEC6AD48170960919 |
| %                     | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------------------+--------+-------------------------------------------+

mysql> select password('123456');
+-------------------------------------------+
| password('123456')                        |
+-------------------------------------------+
| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------------------------------------+
1 row in set (0.03 sec)
mysql> select old_password('123456');
+------------------------+
| old_password('123456') |
+------------------------+
| 565491d704013245       |
+------------------------+
1 row in set (0.00 sec)

http://blog.csdn.net/listeningsea/article/details/8139641
详解MYSQL数据库密码的加密方式及破解方法

MYSQL 数据库的认证密码有两种方式,MYSQL 4.1版本之前是MYSQL323加密,MYSQL 4.1和之后的版本都是MYSQLSHA1加密,MYSQL数据库中自带Old_Password(str)和Password(str)函数,它们均可 以在MYSQL数据库里进行查询,前者是MYSQL323加密,后者是MYSQLSHA1方式加密。

 

 

修改全局变量有三种方法

一.编译时指定一个默认
二.通过my.cnf指定
三.在mysql提示符下设置

1、在编译的时候设置默认最大连接数
打开MySQL的源码,进入sql目录,修改mysqld.cc文件:

{"max_connections", OPT_MAX_CONNECTIONS,
"The number of simultaneous clients allowed.", (gptr*) &max_connections,
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,
0},

”100″即为该参数的默认值,修改为想要的数值,存盘退出。然后执行
./configure;make;make install
重新编译安装MySQL;注意,由于编译安装且修改了MySQL源码,此操作最好在安装MySQL之前进行;


2、在配置文件my.cnf中设置max_connections的值
打开MySQL配置文件my.cnf
[root@www ~]# vi /etc/my.cnf
找到max_connections一行,修改为(如果没有,则自己添加),
max_connections = 1000
上面的1000即该参数的值。

3、实时(临时)修改此参数的值
首先登陆mysql,执行如下命令:
[root@www ~]# mysql -uroot -p
查看当前的Max_connections参数值:
mysql> SELECT @@MAX_CONNECTIONS AS 'Max Connections';
设置该参数的值:
mysql> set GLOBAL max_connections=1000;

MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1;
这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准;
增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等;
该参数设置过小的最明显特征是出现”Too many connections”错误;

 

/etc/my.cn配置文件

每一个[]中包含的是一个程序名字,也叫groups.
in the [mysql] and [client] groups of an option file. [mysqld]
[mysql] [client] [mysqlshow] [mysqld_safe]
[mysqlimport]

将密码写入到参数文件/etc/my.cnf中,避免在命令行中输入
[client]
password=123456
这样以后,重启mysqld后,在命令行中就不需要输入密码了
#mysql直接进入,就跟没有密码一样。

 

 

 

 

 

转载于:https://www.cnblogs.com/createyuan/p/3716734.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值