태그 보관물: Linux

분실한 mysql root password 재설정하기

Mysql을 처음 설치할 때 database root 계정으로 사용할 password를 설정한다. 하지만 시간이 오래 지나서 그때 설정한 password를 기억할 수 없다면 다음의 방법으로 재설정할 수 있다. (Ubuntu 12.04 기준)

Step 1. 실행중인 mysql service를 중지 시킨다.

# service mysql stop

Step 2. Password를 검사하지 않도록 mysql 환경설정 파일을 수정한다.
: /etc/mysql/my.conf file에 skip-grant-tables를 추가하면 password를 검사하지 않는다.

[mysqld]
#
# * Basic Settings
#
user         = mysql
pid-file     = /var/run/mysqld/mysqld.pid
socket       = /var/run/mysqld/mysqld.sock
port         = 3306
basedir      = /usr
datadir      = /var/lib/mysql
tmpdir       = /tmp
lc-messages-dir = /usr/share/mysql

skip-external-locking

skip-grant-tables

Step 3. 새로운 설정 값으로 mysql service를 실행한다.

# sudo service mysql start

Step 4. root 계정으로 mysql database를 연다.

$ mysql -uroot mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.5.29-0ubuntu0.12.04.1 (Ubuntu)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Step 5. root password를 재설정한다.

mysql> UPDATE user SET password=PASSWORD('ROOT_비밀번호') WHERE user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

Step 6. my.conf를 복원하고 mysql service를 재실행 시킨다. 

cannot open shared object file: No such file or directory

64bit ubuntu에서 locate 등의 명령어로 찾아보면 library가 있으나 실제로는 수행할 때 찾을 수 없다는 오류를 내면서 죽는 경우가 있다. 아래는 android build 중에 수행되는 어떤 실행 파일이 libQtGui.so.4를 찾지 못해 종료한 빌드 로그이다.

...
./bin/EXE_FILE: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory
...

하지만 찾아보면 libQtGui.so.4는 정상적으로 있다.

HOME$ locate libQtGui.so.4
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
/usr/lib/x86_64-linux-gnu/libQtGui.so.4.8
/usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1

문제는 이것들이 64bit용이고 실행파일은 32bit executable이라는 것인데 이는 file command로 알 수 있다.

EXE_FILE_PATH$ file EXE_FILE
EXE_FILE_PATH/EXE_FILE: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, BuildID[sha1]=0x39b2e75a8c8a0993f3774fa13ba55b893fa41a66, not stripped

EXE_FILE은 32bit 80386실행 파일이지만 ldd command로 검사해 보면 누락된 library들이 ‘not found’로 표시된다.

HOME$ ldd EXE_FILE_PATH/EXE_FILE
linux-gate.so.1 => (0xf7734000)
libQtGui.so.4 => not found
libQtCore.so.4 => not found
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7701000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf761c000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf75f0000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf75d2000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7428000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7411000)
/lib/ld-linux.so.2 (0xf7735000)

32bit (i386)용 library를 다음과 같이 package명 뒤에 “:i386″을 붙이면 설치 할 수 있다.

$ sudo apt-get install libqtgui4:i386

의존성 있는 library들이 함께 설치되고 다시 ldd command를 실행해 보면 모든 library들이 정상적으로 찾아 지는 것을 볼 수 있다.

$ ldd EXE_FILE_PATH/EXE_FILE
	linux-gate.so.1 =>  (0xf776b000)
	libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xf6c80000)
	libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xf69a3000)
	libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf6987000)
	libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf68a2000)
	libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf6876000)
	libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf6858000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf66ae000)
	libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf6697000)
	libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xf6663000)
	libaudio.so.2 => /usr/lib/i386-linux-gnu/libaudio.so.2 (0xf664a000)
	libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xf6551000)
	libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xf6527000)
	libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xf648c000)
	libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xf643d000)
	libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xf6434000)
	libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xf641a000)
	libXi.so.6 => /usr/lib/i386-linux-gnu/libXi.so.6 (0xf640a000)
	libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xf63ff000)
	libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf63ed000)
	libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf62b9000)
	libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf62b4000)
	librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf62ab000)
	/lib/ld-linux.so.2 (0xf776c000)
	libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf6280000)
	libXt.so.6 => /usr/lib/i386-linux-gnu/libXt.so.6 (0xf6224000)
	libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf6220000)
	libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xf61e4000)
	libffi.so.6 => /usr/lib/i386-linux-gnu/libffi.so.6 (0xf61dd000)
	libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf61d6000)
	libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf61b5000)
	libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf61ae000)

 

Logitech MX anywhere

노트북과 같이 딸려왔던 광마우스의 왼쪽 버튼이 눌러지지 않는 문제가 생겼다. 출장 나오면 꼭 뭐하나 문제가 생긴다니까… 이 기회에 선 정리가 필요 없는 무선 마우스로 바꿔보려고 마음을 먹었다.

구글링해서 걸린 문서들에는 ‘Logitech 무선 마우스는 linux에서 동작하지 않는다’고 적혀 있었는데 가게에 전시된 마우스들은 대부분 Logitech 아니면 MS였다.  망설이고 있었는데 상자에는 windows뿐만 아니라 맥에서도 동작한다고 적혀 있는게 아닌가! ‘설마 맥에서도 되게 해놓고 linux는 뺐겠어?’하는 생각으로 확인하는 샘치고 제일 마음에 드는 녀석으로 그냥 사왔다. 이곳은 환불 잘 되는 나라니까…

wpid-IMG_20120623_200907.jpg

PC에 있는 bluetooth를 쓰는것은 아니고 따로 수신기가 들어 있는데, USB port에 꽂았더니 아무런 추가 설정없이 잘 인식되고 잘 동작됐다. (Ubuntu 12.04)
wpid-IMG_20120623_195529.jpg

대채로 만족 스럽지만, 휙~ 휙~ 날아다니는 느낌이 나는 휠 때문에 적응하기 힘들것 같다고 생각했는데, 누군가에게 말했더니 스크롤 부분을 꾹 눌러 주었다. 아.. 휠 동작을 토글할 수 있는 거였구나..