마스터포유(Master4U)
Monday, 17 of January
 

로그인 Category
MYSQL에러2
관리자  2015-01-14 23:30:21 Hit:13939
첨부파일 #1: mysql에러2.txt (24.0 KB), 다운로드: 4



http://cafe.naver.com/linuxcare/47305

MYSQL에러2        |        팁/기술정보」   2012.11.02 11:00
[출처] MYSQL에러2 (네이버 리눅스 유저 그룹) |작성자 무명me (http://cafe.naver.com/ArticleRead.nhn?articleid=47305&clubid=10098758#)


MYSQL에러2
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

http://gywn.net/2011/12/mysql-installation-on-linux/
리눅스에 MySQL 설치하기(CentOS 5.6)
MySQL DBMS 를 설치할 때 제가 적용하는 내용을 공유합니다.
root 계정으로 설치 준비를 하고, mysql 계정으로 DB를 구동합니다.
일단 하단 내용들은 root계정으로 수행을 합니다.
OS 계정 추가

다음과 같이 dba 그룹을 추가하고 그 밑에 mysql 계정을 추가합니다.

groupadd -g 600 dba
useradd -g 600 -u 605 mysql
passwd mysql

Linux 설정 변경

세션 Limit 를 설정합니다.

vi /etc/security/limits.conf
##하단 내용 추가
mysql            soft    nproc  8192
mysql            hard    nproc  16384
mysql            soft    nofile 8192
mysql            hard    nofile 65536

OS에서 limits.conf 파일을 읽어들이도록 설정합니다. 없으면 생성합니다.
        
vi /etc/pam.d/login
## 하단 내용 추가
session    required     pam_limits.so

/etc/profile 에 다음 내용을 추가하여 login 시 적용되도록 합니다.

vi /etc/profile
##
if [ $USER = "mysql" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

MySQL 데이터 저장 디렉토리를 생성합니다.

mkdir -p /data/mysql/mysql-data
mkdir -p /data/mysql/mysql-tmp
mkdir -p /data/mysql/mysql-iblog
mkdir -p /data/mysql/mysql-binlog

MySQL 설치 파일 다운로드

하단 실행 시 x86_64 가 있으면 64비트이고, i686 이 있으면 32비트입니다.

## OS 버전 확인 ##
uname -a
Linux ..중략.. EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

이제 MySQL Download 의 “Linux – Generic” 탭에서 자신의 OS에 맞는 MySQL Server 받으세요.
현재 Release되는 주 버전은 MySQL 5.5.x이나, 여기서는 MySQL 5.1.57 64비트 버전으로 설명드리겠습니다.
굴욕적이지만, 한국보다는 일본 mirror서버에서 받는 것이 빠르다는..-_-;;
        
cd /usr/local/
## 설치 파일 다운로드
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/
mysql-5.5.19-linux2.6-x86_64.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
이렇게 명령어를 안쓰고,  그냥  그사이트에 들어가서 받아도 됩니다.

MySQL 기본 설정

시스템에 따라 데이터 파일과 같은 일부 변수 값이 달라질 수 있으니, 자신의 시스템에 맞게 수정해서 사용하세요.
        
vi /etc/my.cnf

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
# generic configuration options
port = 3306
socket = /tmp/mysql.sock

back_log = 100
max_connections = 500
max_connect_errors = 10
table_open_cache = 2048
max_allowed_packet = 16M
join_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
bulk_insert_buffer_size = 16M
thread_cache_size = 128
thread_concurrency = 16
query_cache_type = 0
default_storage_engine = innodb
thread_stack = 192K
lower_case_table_names = 1
max_heap_table_size = 128M
tmp_table_size = 128M
local_infile = 0
max_prepared_stmt_count = 256K
event_scheduler = ON
log_bin_trust_function_creators = 1
secure_auth = 1
skip_external_locking
skip_symbolic_links
#skip_name_resolve

## config server and data path
basedir = /usr/local/mysql
datadir = /data/mysql/mysql-data
tmpdir = /data/mysql/mysql-tmp
log_bin = /data/mysql/mysql-binlog/mysql-bin
relay_log = /data/mysql/mysql-binlog/mysql-relay
innodb_data_home_dir = /data/mysql/mysql-data
innodb_log_group_home_dir = /data/mysql/mysql-iblog

## config character set
##utf8
character_set_client_handshake = FALSE
character_set_server = utf8
collation_server = utf8_general_ci
init_connect = "SET collation_connection = utf8_general_ci"
init_connect = "SET NAMES utf8"

## bin log
binlog_format = row
binlog_cache_size = 4M

## Replication related settings
server_id = 1
expire_logs_days = 7
slave_net_timeout = 60
log_slave_updates
#read_only

## MyISAM Specific options
key_buffer_size = 32M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 16M
myisam_repair_threads = 1
myisam_recover = FORCE,BACKUP

# *** INNODB Specific options ***
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2G

innodb_data_file_path = ibdata1:1G:autoextend
innodb_file_per_table = 1
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 8M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 120
innodb_support_xa = 0
innodb_file_io_threads = 8

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no_auto_rehash

[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[mysqlhotcopy]
interactive_timeout

[mysqld_safe]
open_files_limit = 8192

MySQL Server 설치

## 압축 해제
cd /usr/local
tar xzvf mysql-5.5.19-linux2.6-x86_64.tar.gz
## 관리를 위한 심볼릭 링크 생성
ln -s mysql-5.5.19-linux2.6-x86_64 mysql
## 설치 파일 권한 변경
chown -R mysql.dba /usr/local/mysql*
## 시작 스크립트 복사
cp mysql/support-files/mysql.server /etc/init.d/mysqld
## 관련 파일 권한 설정
chown mysql.dba /data/mysql/*
chown mysql.dba /etc/my.cnf
chown mysql.dba /usr/local/mysql*

여기서부터는 이제 mysql 계정으로 실행을 합니다.
관리를 위해서 몇몇 alias를 설정하는 부분입니다.^^

su - mysql
cat >> ~/.bash_profile
## 하단 내용 입력
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin:.
export ADMIN_PWD="ROOT 패스워드"

alias ll="ls -al --color=auto"
alias mydba="mysql -uroot -p$ADMIN_PWD"
alias mymaster="mysql -uroot -p$ADMIN_PWD -e'show master status;'"
alias myslave="mysql -uroot -p$ADMIN_PWD -e'show slave status\G'"
alias mh="cd $MYSQL_HOME"
alias md="cd /data/mysql/mysql-data"
alias mt="cd /data/mysql/mysql-tmp"
alias mb="cd /data/mysql/mysql-binlog"
alias mi="cd /data/mysql/mysql-data"
alias dp="cd /data/mysql/mysql-data"

## 환경 변수 적용
. ~/.bash_profile

MySQL Server 구동

cd /usr/local/mysql
## 기본 데이터베이스 설치
./scripts/mysql_install_db
## MySQL 데몬 Startup
/etc/init.d/mysqld start

MySQL 보안 설정

처음 DB를 올리면 보안 면에서 취약한 부분이 있습니다.
기본적인 보안 정책을 적용하도록 합니다.
mysql root  계정 패스워드만 설정하고 나머지는 Enter만 쭉 치면 됩니다.
        
cd /usr/local/mysql
./bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Change the root password? [Y/n]
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]
- Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
... Failed! Not critical, keep moving...
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MySQL
installation should now be secure.

이제 MySQL DB 설치가 다 끝났습니다.
http://gywn.net/2011/12/mysql-installation-on-linux/

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

mysql 설치 에러 로그와 해결책
기타저장고/DB 2012/10/18 14:00

세팅 : mysql 5.x와 php 5.x , php 4.x가 깔려있다.

PHP 4 설치
PHP4가 설치되있었지만, 설정을 보니 GD 라이브러리가 추가되있지 않아 재설치 했다. (굵은 표시가 gd library)

./configure --prefix=/usr/local/php4 \
--with-apxs2=/usr/local/apache_php4/bin/apxs \
--with-mysql=/usr/local/mysql \
--enable-ftp --with-iconv --disable-debug \
--with-openssl --with-mysql \
--with-gd --with-zlib-dir=/usr/lib \


아파치 재시작 후 DB connect 를 시도하였으나 아래와 같은 에러가 발생했다.

에러 메세지와 함께 해결책을 적어본다.


1.MySQL Error: Can't connect to local MySQL server
through socket '/var/lib/mysql/mysql.sock' (111)

근본적인 원인은 권한문제 인 것 같다.
나는 /var/lib/mysql/mysql.sock이 있음에도 이 메세지가 출력되었는데..
방법(2)로도 해결되었지만, 링크파일 생성보다는
아래와 같이 권한을 올바르게 변경해주는 게 해답일 듯 싶다.

방법(1)
killall mysqld
chmod 755 -R /var/lib/mysql
chown mysql.mysql -R /var/lib/mysql
safe_mysqld --language=korean &

방법(2) /tmp/mysql.sock의 파일을 링크해준다.
rm -f /var/lib/mysql/mysql.sock
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

2.Can't connect to local MySQL server through socket
'/var/lib/mysql/mysql.sock' (13)

/usr/local/mysql 디렉토리의 권한문제
보안상 문제가 없다면 권한을 777로 변경해주자.
chmod 777  /usr/local/mysql

3. ERROR 1251: Client does not support authentication protocol
requested by server; consider upgrading MySQL client

MySQL 클라이언트 버전을 올리라는거임. 아래와 같이 계정을 구 형식 패스워드로 변경해주면 된다.
update user set Password=old_password('**') WHERE User='user';
flush privileges;

3번의 현상 설명은.. 인터넷 찾다가 아래와 같이 나왔길래 긁어왔다.
참고로 내가 설치한 환경은 Mysql 5.x 버전에 php4.x였음.

MySQL 5 and old clients (like php4)
Warning: mysql_connect(): Client does not support authentication
protocol requested by server; consider upgrading MySQL client
in /blah/somepage.php on line 123

The reason for this warning is because PHP4 can’t communicate with
a MySQL5 server unless it’s using old passwords
(set by using the OLD_PASSWORD() function below.)

There are two simple ways to fix this. The first would be
to upgrade your version of php.
Unless you *really* need php4 (or below?!) upgrade!
I’m not sure php4 is supported any more and
should be considered a security risk.
If you can’t upgrade, just do this in your database:

update mysql.user set password=OLD_PASSWORD('thepassword') where user = 'theusername';
and: flush privileges;

This should do the trick. Be warned, if you issue any GRANT statements
after this you will have to update mysql.user again.

GD 라이브러리를 깔지 않고 아래와 같이 configure 하면 발생하지 않았던거 같은데..

./configure --prefix=/usr/local/php4 \
--with-apxs2=/usr/local/apache_php4/bin/apxs \
--with-mysql=/usr/local/mysql \
--enable-ftp --with-iconv \
--disable-debug --with-openssl \
--with-mysql \

GD 라이브러리 + PHP4 + Mysql 5.x 간의 연동문제와 관련있는 것일까?? 그것까진 잘 모르겠다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@



Centos 에서 MySQL 5.5.9 소스버전 설치
MySQL  Add comments
Mar 152011

CMake 설치
MySQL 을 소스 설치할 경우에는 http://www.cmake.org 사이트에 접속하여 cmake 를 다운로드 받습니다.
cmake 는 압축을 해제하면 바로 사용할 수 있습니다.
        
tar xvf cmake-2.8.4-Linux-i386.tar.gz
/etc/profile 에 cmake 의 PATH 를 추가하여 줍니다.
        
vi /etc/profile
아래의 내용을 profile 하단에 추가하여 줍니다.        
export PATH=$PATH:/opt/cmake-2.8.4-Linux-i386/bin
변경된 profile 을 시스템에 적용합니다.
        
source /etc/profile
그룹 및 사용자 계정 생성
        
groupadd dba
useradd -g dba mysql
MySQL 설치

압축을 해제 합니다.
        
tar xvf mysql-5.5.9.tar.gz

아래의 Package 를 설치 합니다.
yum -y install zlib curl
yum -y install gcc g++ cpp gcc-c++
yum -y install openssl openssl-devel
yum -y install ncurses-devel
yum -y install bzip2-devel
yum -y install libtermcap-devel libc-client-devel
yum -y install bison

cmake 를 사용하여 설치를 진행합니다.
        
cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.5.9 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_DATADIR=/data/database/mysql \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \

아래의 명령을 실행하여 설치합니다.
make
make install

MySQL 의 설치폴더 권한을 변경합니다.
        
chown -R mysql:dba /opt/mysql-5.5.9

MySQL 설치디렉토리로 이동하여 기본 데이터베이스를 생성합니다.
        
cd /opt/mysql-5.5.9
./scripts/mysql_install_db \
--user=mysql \
--datadir=/data/database/mysql \

설정파일을 복사합니다.
        
cp support-files/my-medium.cnf my.cnf

서버 기동시 MySQL 자동 실행을 위하여 서비스로 등록합니다.
        
cp support-files/mysql.server /etc/init.d/mysqld

서비스 등록 파일을 vi 편집기로 열어
datadir 부분을 찾아 설치시 설정했던 폴더를 지정합니다.
        
vi /etc/init.d/mysqld

아래의 내용을 추가합니다.
        
datadir=/data/database/mysql

MySQL 을 실행합니다.
        
service mysqld start
#mysqld_safe --datadir=/data/database/mysql &

서비기동시 자동으로 시작할 수 있도록 아래의 명령을 실행시킵니다.
        
chkconfig --add mysqld
chkconfig --level 35 mysqld on
chkconfig --list | grep mysqld

mysqladmin 을 실행하여 root 의 패스워드를 변경합니다.
        
mysqladmin -uroot password

mysql 에 정상적으로 접속하는지 확인 합니다.

@@@@@@@@@@@@@@@@@@@@@@@@

/etc/init.d/mysqld stop
/etc/init.d/mysqld start

MySQL 기본 명령어 정리

MySQL의 기본 명령어와 SQL문 정리. 내가 RDBMS에 완전 문외한이기 때문에 기본 SQL쿼리까지…

Redhat Linux 7.3, MySQL 3.23.58 에서 테스트함.

설치는 Redhat 기본 제공 RPM으로 했다.
데이터베이스 접속

mysql -u 사용자명 -p dbname

설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.

mysql -u root mysql

비밀번호 변경

MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다. 다음 세가지 방법으로 비밀번호를 변경 할 수 있다.

# mysqladmin 이용
mysqladmin -u root password 새비밀번호

# update문 이용
mysql -u root mysql
----
mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';
mysql> FLUSH PRIVILEGES;

# Set Password 이용
mysql> SET PASSWORD FOR root=password('새비밀번호');

일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin
명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.
사용자 추가/삭제

mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';

username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다.
username은 dbname이라는 데이타베이스에 대해 모든 권한을 가지고 있다.
username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면

mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';

위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

MySQL error 1045(28000): Access denied for user ...에 따르면 '%'란 localhost 를
제외한 모든 호스트를 뜻한다고 한다. 즉, localhost에 대해서는 명시적으로 따로 권한을 지정해야 한다.
불필요한 사용자 삭제는

mysql> DLETE FROM user WHERE user='username';
mysql> FLUSH PRIVILEGES;

데이터베이스 생성/보기

# 데이터베이스를 생성하고,
mysql> CREATE DATABASE dbname;

# 현재 존재하는 데이터베이스 목록을 보여준다.
mysql> SHOW DATABASES;

# 특정 데이타베이스를 사용하겠다고 선언한다.
mysql> USE dbname;

# 쓸모 없으면 과감히 삭제한다.
mysql> DROP DATABASE [IF EXISTS] dbname;

IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.
테이블 생성/보기
테이블을 생성하고,

mysql> CREATE TABLE tablename (
  column_name1 INT,
  column_name2 VARCHAR(15),
  column_name3 INT );

현재 데이타베이스의 테이블 목록을 보고

mysql> SHOW TABLES;

테이블 구조를 살펴본다.

mysql> EXPLAIN tablesname;
혹은
mysql> DESCRIBE tablename;

이름을 잘못 지정했으면 이름을 변경할 수도 있다.

mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];

필요 없으면 삭제한다.

mysql> DROP TABLE [IF EXISTS] tablename;

현재 상태 보기

mysql> STATUS

--------------
mysql Ver 11.18 Distrib 3.23.58, FOR pc-linux (i686)

Connection id: 26
Current DATABASE: study
Current user: study@localhost
Current pager: stdout
USING OUTFILE: ''
Server version: 3.23.58
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: euc_kr
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 9 min 59 sec

Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 FLUSH TABLES: 1
Open TABLES: 1 Queries per second avg: 0.021
--------------

INSERT

mysql> INSERT INTO tablename VALUES(값1, 값2, ...);
혹은
mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);

SELECT

mysql> SELECT col1, col2, ... FROM tablename;

컬럼명을 *로 하면 모든 컬럼 의미.

mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;

컬럼의 이름을 바꿔서 출력.

mysql> SELECT * FROM tablename ORDER BY col1 DESC;
mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;

DESC는 내림차순 ASC는 오름차순.

mysql> SELECT * FROM grade WHERE korean < 90;

결과중 처음부터 10개만 가져오기

mysql> SELECT * FROM grade LIMIT 10;

결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.

mysql> SELECT * FROM grade LIMIT 100, 10;

UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건

DELETE

mysql> DELETE FROM tablename WEHRE 조건

mysql에서 쿼리 결과 세로로 보기

-E 옵션을 줘서 실행한다.

mysql -E -u root -p mysql

mysql에서 발생한 오류나 경고 다시 보기

mysql> SHOW errors;
mysql> SHOW warnings;

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

/etc/init.d/mysqld stop
/etc/init.d/mysqld start


DB접속
> mysql -u 계정ID -p 계정PW;

DB 목록보기
> show databases;
mysql> show databases;

DB 선택하기
> use DB명;

DB 생성
> mysqladmin -u root -p root계정비밀번호 create database 새로운DB명;

DB 삭제
> mysqladmin -u root -p root계정비밀번호 drop database 새로운DB명;

계정추가
> mysql -u 새로운아이디 권한설정(select, insert, delete, alter, drop, create 등) -p 사용할비밀번호;

테이블 생성
>create table 테이블명(컬럼명 타입 조건);
ex.) create table test(no int NOT NULL, t_name varchar(20), content TEXT(255));

테이블 목록보기
> show tables;

테이블 이름 변경
> alter table 테이블명 rename 변경할테이블명;

테이블 삭제
> drop table 테이블명;

테이블 생성
>create table 테이블명(컬럼명 타입 조건);

테이블 구조 확인
> desc 테이블명;
> explain 테이블명;

테이블 컬럼(필드) 추가
> alter table 테이블명 add 추가할필드명 타입 조건 first 또는 after 필드명;
ex) alter table test add name varchar(20) after age;
// test 테이블에 name 필드를 age뒤에 생성한다.

테이블 컬럼(필드) 삭제
> alter table 테이블명 drop 삭제할필드명;

데이터 입력
> inset into 테이블명 values('필드값','필드값','필드값');

데이터 수정
> update 테이블명 set 수정할필드명='수정할필드값' where 조건필드명='조건데이터값';
ex) where 조건식에 의한 테이터를 지정하지 않을 경우  해당 필드의 수정값이 모든 데이터에 반영되니 주의.
ex) update test set age='35' where name='최민호';
//test 테이블의 name값이 최민호인 데이터의 age 값을 35로 수정한다.

데이터 삭제
> delete from 테이블명 where 조건검색필드명='조건검색데이터값';

데이터 검색
> select * from 테이블명; // 모든 필드 데이터를 검색
> select 필드명,필드명 from 테이블명; // 지정한 필드의 데이터만 검색

데이터 검색 조건
> select * from 테이블명 where 조건;
ex) select * from test where age='35'; // test 테이블에서 age가 35인 데이터를 검색한다.
ex) select * from test where age<'35'
ex) select * from test where age >'25' and age<'35';
ex) select * from test where age='35' and name='최민호' and sex='남';
ex) select * from test where name like '민%'; // '민'으로 시작하는 데이터를 검색
ex) select * from test where name like '%민'; // '민'으로 끝나는 데이터를 검색
ex) select * from test where name like '%민%'; // '민'을 포함하고 있는 데이터를 검색

데이터 정렬
> select * from 테이블명 order by 정렬기준필드명
ex) select * from test order by no // no 필드값 기준으로 오름순 정렬
ex) select * from test order by no desc // no 필드값 기준으로 내림순 정렬

검색된 데이터의 일부만 가져오기
> select * from 테이블명 기준필드명 asc limit 시작번호,검색할데이터수;
ex) select * from test num asc limit 0,20;
// test 테이블에서  num필드 값을 기준으로 첫번째(0)부터 20개의 데이터를 검색한다.
ex) select * from test were age<'35' order by num desc, num asc limit 0,20

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

PHP에서 MySQL과 socket 연결이 안될때 해결방법

PHP에서 mysql_connect()를 이용해 MySQL과 연결하려 했더니 헐 접속이 않되네요.
애러 문구는 아래와 같이 나오네요.

Warning: mysql_connect() [function.mysql-connect]: Can’t connect to
local MySQL server through socket ‘/tmp/mysql.sock’ (2) …

물론 MySQL이 죽어 있으면 당연히 안되겠지만 멀쩡하게 살아 있고 터미널에서 command line에서
접속도 잘 되는데 PHP만 안되네요.
그래서 찾아 봤더니 문제는 mysql.sock 파일을 엉뚱한것을 사용해서랍니다.
설치할때의 상태와 실행시의 상태가 달라져서 MySQL이 실행할때 mysql.sock 파일을
다른 곳에 있는것으로 사용해서라는군요. 뭐 암튼, PHP가 엉뚱한 파일을 찾아서
mysql.sock 파일이 없다는 뭐 그런 오류인데요.
해결방법은 아래와 같지 3가지 있다고 합니다.
“근원e”님 감사합니다. 덕분에 쉽게 해결했습니다.

php 소스 수정
mysql_connect('localhost:/tmp/mysql.sock', 'username', 'password');
위와 같이 host 값에 소켓 파일 위치를 명시하는 방법입니다.
서버 환경 파일을 직접 수정하지 못하는 경우 사용하시면 됩니다.

2. php.ini 수정
[MySQL]
mysql.default_socket = /tmp/mysql.sock
위와 같이 php.ini파일에 mysql.default_socket 설정 항목이 있습니다. 그곳에 정의해 주시면 됩니다.
MySQLi 도 사용하신다면 mysqli에도 default_socket에 써주시면 됩니다.

3. my.ini 수정
[mysqld]
socket = /tmp/mysql.sock
이건 mysql 환경 설정을 바꾸는 건데요. 실제로 mysql 환경을 바꿔야 할일이 있을지는 모르겠네요.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


본문인쇄본문메일발송
MySQL 기본쿼리 : DELETE 문
Fatal error에 대한 설명과 해결방법 부탁드립니다.
Copyright 1999-2019 Zeroboard / skin by ChanBi