반응형

생성시 설정

CREATE DATABASE createDatabaseName DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

 

수정

ALTER DATABASE databaseName DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

반응형
반응형

Illegal mix of collations 

컬럼 CHARACTER이 안맞아서 발생한다.

컬럼 캐릭터셋이 다른데 조인 걸어 조회쿼리를 실행 했을때 발생한다.

utf8_unicode_ci 와 utf8_grneral_ci 로 각각 다른 캐릭터셋 이었다.

암꺼나 같은 걸로 변경해주면 해결 끝!.

반응형
반응형

포린키 생성 실패


메시지 내용


2017-10-20 14:53:53 c8ca8b70 Error in foreign key constraint of table CYBER_EDU_MUSEUM_UPDATE/#sql-532_1dca:

 FOREIGN KEY (`DSPY_SIL_CODE`, `PART_NO`) REFERENCES `JNT_DSPY_PART` (`DSPY_SIL_CODE`, `PART_NO`):

Cannot find an index in the referenced table where the

referenced columns appear as the first columns, or column types

in the table and the referenced table do not match for constraint.

Note that the internal storage type of ENUM and SET changed in

tables created with >= InnoDB-4.1.12, and such columns in old tables

cannot be referenced by such columns in new tables.

See http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html

for correct foreign key definition.



내가 찾아봐서 해결한 방법은

컬럼에 utf8_unicode_ci , utf8_general_ci 두개를 참조 컬럼과 외래키 컬럼의 콜렉션타입을 다르게 해서 였다.

각각의 테이블 키 컬럼의 타입과 참조 컬럼의 타입을 같게 아무거나 맞춰주니 포린키 생성 성공했다.


utf8_general_ci 에는 악센트 문자가 없어서 엑센트 없는문자로만 나온다네요.

utf8_general_ci로 해야 속도가 빠르다고는 한다. 


제일 중요한건 한가지 타입으로 맞춰주는거.



반응형
반응형
mysql 설치경로 확인
  • # ps aux | grep mysql
  • # whereis mysql

기본 설치 경로는  /var/lib/mysql/

저장된 database 경로 확인 방법

mysql> show variables like 'datadir';

반응형
반응형

mysql 에서 예약어를 사용 할때 다음과 같은 에러가 나온다.


mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'interval (begin INT, end INT)'

쿼더 기호를 이용해서 다음과 같이 사용 할 수도 있다.

mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

예약어들은 5.7 기준


CESSIBLE (R)ACCOUNT[a]ACTION
ADD (R)AFTERAGAINST
AGGREGATEALGORITHMALL (R)
ALTER (R)ALWAYS[b]ANALYSE
ANALYZE (R)AND (R)ANY
AS (R)ASC (R)ASCII
ASENSITIVE (R)ATAUTOEXTEND_SIZE
AUTO_INCREMENTAVGAVG_ROW_LENGTH
BACKUPBEFORE (R)BEGIN
BETWEEN (R)BIGINT (R)BINARY (R)
BINLOGBITBLOB (R)
BLOCKBOOLBOOLEAN
BOTH (R)BTREEBY (R)
BYTECACHECALL (R)
CASCADE (R)CASCADEDCASE (R)
CATALOG_NAMECHAINCHANGE (R)
CHANGEDCHANNEL[c]CHAR (R)
CHARACTER (R)CHARSETCHECK (R)
CHECKSUMCIPHERCLASS_ORIGIN
CLIENTCLOSECOALESCE
CODECOLLATE (R)COLLATION
COLUMN (R)COLUMNSCOLUMN_FORMAT
COLUMN_NAMECOMMENTCOMMIT
COMMITTEDCOMPACTCOMPLETION
COMPRESSEDCOMPRESSION[d]CONCURRENT
CONDITION (R)CONNECTIONCONSISTENT
CONSTRAINT (R)CONSTRAINT_CATALOGCONSTRAINT_NAME
CONSTRAINT_SCHEMACONTAINSCONTEXT
CONTINUE (R)CONVERT (R)CPU
CREATE (R)CROSS (R)CUBE
CURRENTCURRENT_DATE (R)CURRENT_TIME (R)
CURRENT_TIMESTAMP (R)CURRENT_USER (R)CURSOR (R)
CURSOR_NAMEDATADATABASE (R)
DATABASES (R)DATAFILEDATE
DATETIMEDAYDAY_HOUR (R)
DAY_MICROSECOND (R)DAY_MINUTE (R)DAY_SECOND (R)
DEALLOCATEDEC (R)DECIMAL (R)
DECLARE (R)DEFAULT (R)DEFAULT_AUTH
DEFINERDELAYED (R)DELAY_KEY_WRITE
DELETE (R)DESC (R)DESCRIBE (R)
DES_KEY_FILEDETERMINISTIC (R)DIAGNOSTICS
DIRECTORYDISABLEDISCARD
DISKDISTINCT (R)DISTINCTROW (R)
DIV (R)DODOUBLE (R)
DROP (R)DUAL (R)DUMPFILE
DUPLICATEDYNAMICEACH (R)
ELSE (R)ELSEIF (R)ENABLE
ENCLOSED (R)ENDENDS
ENGINEENGINESENUM
ERRORERRORSESCAPE
ESCAPED (R)EVENTEVENTS
EVERYEXCHANGEEXECUTE
EXISTS (R)EXIT (R)EXPANSION
EXPIREEXPLAIN (R)EXPORT
EXTENDEDEXTENT_SIZEFALSE (R)
FASTFAULTSFETCH (R)
FIELDSFILEFILE_BLOCK_SIZE[e]
FILTER[f]FIRSTFIXED
FLOAT (R)FLOAT4 (R)FLOAT8 (R)
FLUSHFOLLOWS[g]FOR (R)
FORCE (R)FOREIGN (R)FORMAT
FOUNDFROM (R)FULL
FULLTEXT (R)FUNCTIONGENERAL
GENERATED[h] (R)GEOMETRYGEOMETRYCOLLECTION
GET (R)GET_FORMATGLOBAL
GRANT (R)GRANTSGROUP (R)
GROUP_REPLICATION[i]HANDLERHASH
HAVING (R)HELPHIGH_PRIORITY (R)
HOSTHOSTSHOUR
HOUR_MICROSECOND (R)HOUR_MINUTE (R)HOUR_SECOND (R)
IDENTIFIEDIF (R)IGNORE (R)
IGNORE_SERVER_IDSIMPORTIN (R)
INDEX (R)INDEXESINFILE (R)
INITIAL_SIZEINNER (R)INOUT (R)
INSENSITIVE (R)INSERT (R)INSERT_METHOD
INSTALLINT (R)INT1 (R)
INT2 (R)INT3 (R)INT4 (R)
INT8 (R)INTEGER (R)INTERVAL (R)
INTO (R)INVOKERIO
IO_AFTER_GTIDS (R)IO_BEFORE_GTIDS (R)IO_THREAD
IPCIS (R)ISOLATION
ISSUERITERATE (R)JOIN (R)
JSON[j]KEY (R)KEYS (R)
KEY_BLOCK_SIZEKILL (R)LANGUAGE
LASTLEADING (R)LEAVE (R)
LEAVESLEFT (R)LESS
LEVELLIKE (R)LIMIT (R)
LINEAR (R)LINES (R)LINESTRING
LISTLOAD (R)LOCAL
LOCALTIME (R)LOCALTIMESTAMP (R)LOCK (R)
LOCKSLOGFILELOGS
LONG (R)LONGBLOB (R)LONGTEXT (R)
LOOP (R)LOW_PRIORITY (R)MASTER
MASTER_AUTO_POSITIONMASTER_BIND (R)MASTER_CONNECT_RETRY
MASTER_DELAYMASTER_HEARTBEAT_PERIODMASTER_HOST
MASTER_LOG_FILEMASTER_LOG_POSMASTER_PASSWORD
MASTER_PORTMASTER_RETRY_COUNTMASTER_SERVER_ID
MASTER_SSLMASTER_SSL_CAMASTER_SSL_CAPATH
MASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_CRL
MASTER_SSL_CRLPATHMASTER_SSL_KEYMASTER_SSL_VERIFY_SERVER_CERT (R)
MASTER_TLS_VERSION[k]MASTER_USERMATCH (R)
MAXVALUE (R)MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOUR
MAX_ROWSMAX_SIZEMAX_STATEMENT_TIME[l]
MAX_UPDATES_PER_HOURMAX_USER_CONNECTIONSMEDIUM
MEDIUMBLOB (R)MEDIUMINT (R)MEDIUMTEXT (R)
MEMORYMERGEMESSAGE_TEXT
MICROSECONDMIDDLEINT (R)MIGRATE
MINUTEMINUTE_MICROSECOND (R)MINUTE_SECOND (R)
MIN_ROWSMOD (R)MODE
MODIFIES (R)MODIFYMONTH
MULTILINESTRINGMULTIPOINTMULTIPOLYGON
MUTEXMYSQL_ERRNONAME
NAMESNATIONALNATURAL (R)
NCHARNDBNDBCLUSTER
NEVER[m]NEWNEXT
NONODEGROUPNONBLOCKING[n]
NONENOT (R)NO_WAIT
NO_WRITE_TO_BINLOG (R)NULL (R)NUMBER
NUMERIC (R)NVARCHAROFFSET
OLD_PASSWORD[o]ON (R)ONE
ONLYOPENOPTIMIZE (R)
OPTIMIZER_COSTS[p] (R)OPTION (R)OPTIONALLY (R)
OPTIONSOR (R)ORDER (R)
OUT (R)OUTER (R)OUTFILE (R)
OWNERPACK_KEYSPAGE
PARSERPARSE_GCOL_EXPR[q]PARTIAL
PARTITION (R)PARTITIONINGPARTITIONS
PASSWORDPHASEPLUGIN
PLUGINSPLUGIN_DIRPOINT
POLYGONPORTPRECEDES[r]
PRECISION (R)PREPAREPRESERVE
PREVPRIMARY (R)PRIVILEGES
PROCEDURE (R)PROCESSLISTPROFILE
PROFILESPROXYPURGE (R)
QUARTERQUERYQUICK
RANGE (R)READ (R)READS (R)
READ_ONLYREAD_WRITE (R)REAL (R)
REBUILDRECOVERREDOFILE
REDO_BUFFER_SIZEREDUNDANTREFERENCES (R)
REGEXP (R)RELAYRELAYLOG
RELAY_LOG_FILERELAY_LOG_POSRELAY_THREAD
RELEASE (R)RELOADREMOVE
RENAME (R)REORGANIZEREPAIR
REPEAT (R)REPEATABLEREPLACE (R)
REPLICATE_DO_DB[s]REPLICATE_DO_TABLE[t]REPLICATE_IGNORE_DB[u]
REPLICATE_IGNORE_TABLE[v]REPLICATE_REWRITE_DB[w]REPLICATE_WILD_DO_TABLE[x]
REPLICATE_WILD_IGNORE_TABLE[y]REPLICATIONREQUIRE (R)
RESETRESIGNAL (R)RESTORE
RESTRICT (R)RESUMERETURN (R)
RETURNED_SQLSTATERETURNSREVERSE
REVOKE (R)RIGHT (R)RLIKE (R)
ROLLBACKROLLUPROUTINE
ROWROWSROW_COUNT
ROW_FORMATRTREESAVEPOINT
SCHEDULESCHEMA (R)SCHEMAS (R)
SCHEMA_NAMESECONDSECOND_MICROSECOND (R)
SECURITYSELECT (R)SENSITIVE (R)
SEPARATOR (R)SERIALSERIALIZABLE
SERVERSESSIONSET (R)
SHARESHOW (R)SHUTDOWN
SIGNAL (R)SIGNEDSIMPLE
SLAVESLOWSMALLINT (R)
SNAPSHOTSOCKETSOME
SONAMESOUNDSSOURCE
SPATIAL (R)SPECIFIC (R)SQL (R)
SQLEXCEPTION (R)SQLSTATE (R)SQLWARNING (R)
SQL_AFTER_GTIDSSQL_AFTER_MTS_GAPSSQL_BEFORE_GTIDS
SQL_BIG_RESULT (R)SQL_BUFFER_RESULTSQL_CACHE
SQL_CALC_FOUND_ROWS (R)SQL_NO_CACHESQL_SMALL_RESULT (R)
SQL_THREADSQL_TSI_DAYSQL_TSI_HOUR
SQL_TSI_MINUTESQL_TSI_MONTHSQL_TSI_QUARTER
SQL_TSI_SECONDSQL_TSI_WEEKSQL_TSI_YEAR
SSL (R)STACKEDSTART
STARTING (R)STARTSSTATS_AUTO_RECALC
STATS_PERSISTENTSTATS_SAMPLE_PAGESSTATUS
STOPSTORAGESTORED[z] (R)
STRAIGHT_JOIN (R)STRINGSUBCLASS_ORIGIN
SUBJECTSUBPARTITIONSUBPARTITIONS
SUPERSUSPENDSWAPS
SWITCHESTABLE (R)TABLES
TABLESPACETABLE_CHECKSUMTABLE_NAME
TEMPORARYTEMPTABLETERMINATED (R)
TEXTTHANTHEN (R)
TIMETIMESTAMPTIMESTAMPADD
TIMESTAMPDIFFTINYBLOB (R)TINYINT (R)
TINYTEXT (R)TO (R)TRAILING (R)
TRANSACTIONTRIGGER (R)TRIGGERS
TRUE (R)TRUNCATETYPE
TYPESUNCOMMITTEDUNDEFINED
UNDO (R)UNDOFILEUNDO_BUFFER_SIZE
UNICODEUNINSTALLUNION (R)
UNIQUE (R)UNKNOWNUNLOCK (R)
UNSIGNED (R)UNTILUPDATE (R)
UPGRADEUSAGE (R)USE (R)
USERUSER_RESOURCESUSE_FRM
USING (R)UTC_DATE (R)UTC_TIME (R)
UTC_TIMESTAMP (R)VALIDATION[aa]VALUE
VALUES (R)VARBINARY (R)VARCHAR (R)
VARCHARACTER (R)VARIABLESVARYING (R)
VIEWVIRTUAL[ab] (R)WAIT
WARNINGSWEEKWEIGHT_STRING
WHEN (R)WHERE (R)WHILE (R)
WITH (R)WITHOUT[ac]WORK
WRAPPERWRITE (R)X509
XAXID[ad]XML
XOR (R)YEARYEAR_MONTH (R)
ZEROFILL (R)


반응형
반응형
xampp로 mysql 인스톨시 디폴트로 캐릭터셋이 latin1으로 지정됩니다.
즉 한글이나 일본어 다 깨져나오지요.

수정방법은 my.cnf 수정하기
xampp 가 설치된 디렉토리 네에 mysql/bin 폴더에 my.cnf 파일이 있다.
워드패드로든 뭐든 에디터로 열고 [mysqld]부분에 아래의 문장을 추가하면된다.


[mysqld]
default-character-set=utf8
skip-character-set-client-handshake


default-character-set=utf8
: utf8 유니코드로 설정한다는 것이다 한글은 euc-kr
skip-character-set-client-handshake
: 클라이언트 언어셋을 무시하겠다는 뜻.

mysql 언어셋 확인 명령어
>show variables like "cha%"; 또는 status
반응형
반응형

MySQL에서 root 암호 설정

mysqladmin을 이용하여 root 암호 설정

MySQL을 처음 설치하면 root 암호가 설정되어 있지 않기 때문에 반드시 설치 후 바로 root 암호를 먼저 설정해주세요.%%% root 암호를 설정하기 위해서는

 $ mysqladmin -u root -p password new-password

이러한 명령을 실행하면 됩니다. 실행하면 패스워드를 입력하라고 하는데 처음 root의 패스워드는 없으므로 그냥 엔터를 치시면 root 패스워드가 변경됩니다.

update문을 이용하여 root 암호 설정

 $ mysql -u root mysql

 mysql> update user set password = password('new-password') where user = 'root';
 mysql> flush privileges;

set password를 이용하여 root 암호 설정

 mysql> set password for root = password('new-password');

마지막으로 패스워드가 재대로 변경되었는지 테스트를 합니다.

 $ mysql -u root -p

MySQL에서 Database 보기와 생성

데이터베이스 보기

 myslq> show databases;

데이터베이스 생성

 mysql> create database DB명;

MySQL에서 새로운 사용자 추가

MySQL에서 사용할 Database를 만든 후에 사용자를 추가하려면, 일단 root로 접속한 후

 $ mysql (?h localhost) ?u root ?p
 Enter password: *******

 mysql> use mysql
 mysql> INSERT INTO user VALUES('%', '사용자', PASSWORD('비밀번호'),
     -> 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');

이렇게 해서 사용자를 하나 만들었습니다. 맨 처음 ‘%’ 가 붙은 것은 다른 어느 호스트에서도 접속이 가능하게 하기 위해서 입니다. 간단하게 추가 하는 방법이 있습니다.


'GRANT' 명령을 이용하면 쉽게 사용자 추가 및 권한 설정이 가능합니다. (MySQL Manual 4.3.5)

  • 일반 사용자 추가
 mysql> grant all privileges on dbuser.* to dbuser@localhost identified by 'password' with grant option;

  • 특정 이름의 데이터베이스에 대한 모든 권한을 가지는 사용자 추가
 mysql> grant all privileges on `dbuser_%`.* to dbuser@localhost identified by 'password' with grant option;

'dbuser_'으로 시작되는 데이터베이스에 대한 모든 권한을 가지는 'dbuser' 사용자 계정 추가%%% 이런식으로 계정을 만들면 새로운 사용자에 대한 개별적인 데이터베이스 권한 설정을 생략할 수 있습니다. -- 이현진


사용자에게 Database 사용 권한을 주기

 mysql> INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv)
     -> VALUES('%', 'DB명', '사용자', 'Y', 'Y', 'Y', 'Y','Y','Y');

모든 권한을 준다면 아래와 같은 방법을 하는것이 더욱 편리힙니다.

 mysql> GRANT ALL on DB명.* TO id@'localhost'  ;
 mysql> GRANT ALL on DB명.* TO id;
 mysql> GRANT ALL on DB명.* TO id@'xxx.xxx.xxx.%';

첫번째 localhost?로컬 호스트 (DB가 자기컴퓨터에 깔려 있는경우..에만 접속을 허용하겠다는 뜻입니다.

두번째 문장은 로컬 호스트를 제외하고는 모든 ip에서 접근을 시키겠다는 내용입니다.

세번째는 c클래스만 허용하겠다는 의미 입니다. xxx.xxx.%.% 면 B클래스 xxx.%.%.%면 A클래스로 제한을 할수 있습니다.

그리고 변경된 내용을 메모리에 반영하기 위해 다음 명령을 실행합니다.

 mysql> FLUSH PRIVILEGES;

이렇게 MySQL을 설정해 놓으면 사용자가 다른 호스트에서도 접속할 수 있고 테이블 추가 삭제 등도 할 수 있습니다.


이렇게 수동으로도 가능 하지만 요즘은 툴을 많이 사용합니다. 툴은 DB에 대한 기본적인 지식만 있으면 무리가 없이 사용 되는 녀석이죠 ^^%%% 저같이 쿼리에 약한 사람들에게는 정말 유리 합니다. 아래 페이지에 가셔서 다운로드를 받으세요 :) 한글 사용에 약간의 제약이 있습니다.%%% 다른 여러가지 DB관리 툴이 있지만 상당히 고가의 툴이랍니다 :) 암흑의 루트에서 돌고 있는 녀석들이 종종 있습니다.

http://www.mysql.com/downloads/mysqlcc.html

반응형

+ Recent posts